問題
JDK 11のデフォルトで使用されているTLSプロトコルのバージョンはTLSv1.3であり、サードパーティとの接続に影響を与える可能性がある:
-
-Dhttps.protocols=TLSv1.2
(Java 8 のデフォルト) -
-Dhttps.protocols=TLSv1.3
(Java 11 のデフォルト) -Dhttps.protocols=TLSv1.0 (default in older versions)
サードパーティと接続しようとすると、サポートされているプロトコルがリクエストに追加されます、
"supported_versions (43)": {
"versions": [TLSv1.3]
}
https での接続に関するすべての情報を表示するには、次のプロパティを追加します -Djavax.net.debug=ssl:handshake。
クライアントとサーバーのプロトコルが異なる場合、以下のエラーが表示されます:
Received fatal alert: handshake_failure
環境
- Liferay DXP 7.3
解像度
この問題を解決するために、TLSプロトコルはこのプロパティを追加して設定することができる:
-Dhttps.protocols=TLSv1.2,TLSv1.3(https接続時のみ)
-Djdk.tls.client.protocols=TLSv1.2,TLSv1.3(あらゆる接続に対応)
追加情報
- https://stackoverflow.com/questions/61478298/since-openjdk-java-11-getting-javax-net-ssl-sslhandshakeexception-received-fata
- https://www.oracle.com/java/technologies/javase/11-relnote-issues.html#:~:text=The%20JDK%2011%20release%20includes%20an%20implementation%20of%20the%20Transport,1.3%20specification%20(RFC%208446).