Java 1.8 u341 からクライアント側の動作として TLSv1.3 が有効になったそうです
会社の人に教えていただいたのですが、最近リリースされた Java 1.8 u341 から -Djdk.tls.client.protocols=TLSv1.3
オプションを指定しなくてもクライアントサイドのデフォルト動作として TLSv1.3 が有効になったそうです。
以下のページでもそのようなことが記載されております。
以下のような検証環境/手順で Java 1.8 u341 ではデフォルト設定のままクライアントサイドで TLSv1.3 が動作することを確認しました。
- TLSv1.3 のみ受付けるように設定した PostgreSQL を用意
- Java 1.8 u341 を導入
- JBoss EAP 7.4.5 上で TLSv1.3 を用いて PostgreSQL と接続する環境を用意(ここでは JBoss EAP がクライアントになります)
- デフォルト設定の Java 1.8 u341 上で JBoss EAP 7.4.5 を起動
- JBoss EAP 上で PostgreSQL へアクセスするアプリが期待通り動作することを確認
なお、Java 1.8 u341 より古いバージョンの場合は以下のようなオプションを指定しながら JBoss EAP を起動するとクライアントサイドで TLSv1.3 が利用可能です。
-Djdk.tls.client.protocols=TLSv1.3
-Djdk.tls.client.protocols=TLSv1.3,TLSv1.2 -Dhttps.protocols=TLSv1.3,TLSv1.2
(補足1)利用したい機能や TLS バージョンによってはオプションが変わってくるため、目的に応じて調整してみてください。
(補足2)JDK 11 ではこのオプションを指定しなくてもデフォルトで TLSv1.3 が有効になっています。