2016-11-27 4 views
5

도미노에서 TLS 암호화 방식을 누락 :SSLHandshakeException이 때문에 내가 TLSv1의 및 최신 (NO은 SSLv3를) 만 허용 다른 서버에 대한 HTTPS 연결을 열려고하면 다음과 같은 예외가 발생 내 XPages 응용 프로그램에서 JVM

javax.net.ssl.SSLHandshakeException: No appropriate protocol 

설정 javax.net.debug=ssl:handshake이 추가 정보를 제공합니다 :

SSLContextImpl: Using X509ExtendedKeyManager com.ibm.jsse2.hd 
SSLContextImpl: Using X509TrustManager com.ibm.jsse2.pc 
IBMJSSE2 will ignore com.ibm.jsse2.overrideDefaultProtocol since was set to a non recognized value TLSv1 
Installed Providers = IBMJSSE2, IBMJCE, IBMJGSSProvider, IBMCertPath, IBMSASL, IBMXMLCRYPTO, IBMXMLEnc, Policy, IBMSPNEGO 
JsseJCE: Using SecureRandom IBMSecureRandom from provider IBMJCE version 1.2 
trigger seeding of SecureRandom 
done seeding SecureRandom 
IBMJSSE2 will enable CBC protection 
IBMJSSE2 to send SCSV Cipher Suite on initial ClientHello 
JsseJCE: Using SecureRandom IBMSecureRandom from provider IBMJCE version 1.2 
IBMJSSE2 will allow RFC 5746 renegotiation per com.ibm.jsse2.renegotiate set to none or default 
IBMJSSE2 will not require renegotiation indicator during initial handshake per com.ibm.jsse2.renegotiation.indicator set to OPTIONAL or default taken 
IBMJSSE2 will not perform identity checking against the peer cert check during renegotiation per com.ibm.jsse2.renegotiation.peer.cert.check set to OFF or default 
IBMJSSE2 will not allow unsafe server certificate change during renegotiation per jdk.tls.allowUnsafeServerCertChange set to FALSE or default 
Is initial handshake: true 
JsseJCE: Using KeyAgreement ECDH from provider IBMJCE version 1.2 
JsseJCE: Using signature SHA1withECDSA from provider TBD via init 
JsseJCE: Using signature NONEwithECDSA from provider TBD via init 
JsseJCE: Using KeyFactory EC from provider IBMJCE version 1.2 
JsseJCE: Using KeyPairGenerator EC from provider TBD via init 
JsseJce: EC is available 
Ignoring disabled cipher suite: SSL_RENEGO_PROTECTION_REQUEST for TLSv1 
No available cipher suite for TLSv1 
Thread-8, handling exception: javax.net.ssl.SSLHandshakeException: No appropriate protocol 
Thread-8, SEND TLSv1 ALERT: fatal, 
description = handshake_failure 

가장 큰 문제는 "TLSv1의에 대한 없음 가능한 암호화 제품군"없을 것으로 보인다. SSL 서버 소켓 팩토리 (SSLServerSocketFactory.getDefault())에서 기본 지원되는 암호 스위트 (getDefaultCipherSuites()/getSupportedCipherSuites())를 얻기

는 SSL 암호 스위트가 Domino JVM에서 사용할 수있는 것을 알 수 있지만, 아무도 TLS를위한.

HTTPS 연결을 설정하는 데 사용하는 코드는 TLS 암호 그룹을 사용하는 비 Domino JVM에서 올바르게 작동합니다.

누구든지 Domino JVM에서 TLS 암호 스위트를 사용하는 방법을 알려줄 수 있습니까? 다른 문제가 있고 디버그 정보를 잘못 해석하면 일반적으로 도움이됩니까?


추가 정보 :

도미노 버전 : 9.0.1 FP7

자바 런타임 버전 : pwa6460sr16fp30-20160726_01 (SR16 FP30)

JVM 버전 : JRE 1.6.0 IBM J9 2.4 Windows 7 amd64-64 jvmwa6460sr16f 20160725_312906 JIT - - r9_20160725_121766 GC - GA24_Java6_SR16_20160725_1417_B312906

무제한 JCE 정책 파일이 도미노 JVM에 설치되어

p30-20160725_312906는 j9vm 디렉토리 (JIT 활성화, AOT는 가능)합니다.

+0

TLSv1은 암호 모음이 아닌 프로토콜입니다. – EJP

+0

@EJP : 알아,하지만 다른 프로토콜을위한 다른 암호 스위트가있다. 필자의 경우에는 TLSv1에 사용할 수있는 암호 스위트가 없습니다. –

+0

Domino JVM 버전이 1.6 인 경우 필요한 TLS 버전의 JVM 버전에서 사용할 수있는 지원이 없다고 생각합니다. IBM은 JVM을 업그레이드하겠다고 약속했습니다. 최신 제공 약속은 2017 년 1 분기입니다. 그동안 해결 방법이 최선이라고 생각합니다. https://www-10.lotus.com/ldd/dominowiki.nsf/dx/TLS_1.2 및 http://www-01.ibm.com/이 기사를 살펴보십시오. support/docview.wss? uid = swg21985289 – jpishko

답변

2

이 문제는 how some Java SDKs limit the available cipher suites과 관련이있는 것으로 보입니다. 예를 들어, Dropbox Java SDK은 하드 코드 된 암호 모음 목록을 사용하며 모두 "TLS_"으로 시작합니다. 그러나 Domino JVM에서 모든 암호 세트 이름은 "SSL_"으로 시작합니다. 결과적으로, 이름이 일치하지 않으므로 작성된 SSL 소켓에서 모든 암호 스위트가 사용 불가능하게됩니다.