Lorsque vous essayez d'accéder à un site HTTPS externe avec une application qui utilise IBM JDK, telle que WebSphere Liberty, le message suivant peut apparaître en fonction du site.
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
D'autre part, le JDK Oracle peut fonctionner.
IBM JDK négocie la communication avec TLSv1.0 par défaut. D'un autre côté, si l'autre partie est définie pour ne pas autoriser autre chose que TLSv1.2 (principalement ces jours-ci), la négociation échouera et le message d'erreur ci-dessus se produira.
Définissez les trois propriétés système suivantes. Ensuite, il sera négocié avec TLSv1.2. Cette option a été confirmée dans JDK 1.8.
jvm.options etc.
-Dcom.ibm.jsse2.overrideDefaultTLS=true
-Djdk.tls.client.protocols=TLSv1.2
-Dhttps.protocols=TLSv1.2