Wenn Sie versuchen, mit einer Anwendung, die IBM JDK verwendet, wie z. B. WebSphere Liberty, auf eine externe HTTPS-Site zuzugreifen, wird je nach Site möglicherweise die folgende Meldung angezeigt.
R javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
R at com.ibm.jsse2.av.a(av.java:599)
R at com.ibm.jsse2.av.i(av.java:869)
R at com.ibm.jsse2.av.a(av.java:19)
R at com.ibm.jsse2.av.startHandshake(av.java:672)
R at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:396)
R at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:355)
R at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:14
Auf der anderen Seite kann das Oracle JDK funktionieren.
Das IBM JDK handelt standardmäßig die Kommunikation mit TLSv1.0 aus. Wenn die andere Partei jedoch so eingestellt ist, dass sie nichts anderes als TLSv1.2 zulässt (meistens heutzutage), schlägt die Aushandlung fehl und die obige Fehlermeldung wird angezeigt.
Legen Sie die folgenden drei Systemeigenschaften fest. Dann wird es mit TLSv1.2 ausgehandelt. Diese Option wurde in JDK 1.8 bestätigt.
jvm.Optionen usw.
-Dcom.ibm.jsse2.overrideDefaultTLS=true
-Djdk.tls.client.protocols=TLSv1.2
-Dhttps.protocols=TLSv1.2
Recommended Posts