LoginSignup
1
2

More than 5 years have passed since last update.

IBM JDKでjavax.net.ssl.SSLHandshakeException: Remote host closed connection during handshakeが出たときの対処法

Posted at

経緯

WebSphere Liberty等、IBM JDKを使ったアプリケーションで、外部のHTTPSサイトにアクセスしようとした際に、サイトによっては次のようなメッセージが出ることがあります。

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

一方、Oracle JDKではうまくいくという場合があります。

原因

IBM JDKはデフォルトではTLSv1.0で通信のネゴシエーションをします。一方、相手がTLSv1.2以外を許可しない設定になっている(最近多いです)場合、ネゴシエーションが失敗し、上記のエラーメッセージとなります。

対応

以下の3つのシステムプロパティをセットします。すると、TLSv1.2でネゴシエーションされるようになります。当オプションはJDK 1.8で確認済みです。

jvm.options等
-Dcom.ibm.jsse2.overrideDefaultTLS=true
-Djdk.tls.client.protocols=TLSv1.2
-Dhttps.protocols=TLSv1.2
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2