@skelwaがすでにコメントしているように、enabledTLSProtocols=TLSv1.2
を追加する必要があります 問題を解決するための接続文字列の構成プロパティ。
Connector /J の完全な接続文字列 次のようになります:
jdbc:mysql://<host>:<port>/<dbname>?enabledTLSProtocols=TLSv1.2
r2dbc
の場合 tlsVersion=TLSv1.2
を使用する必要があります 代わりに。
残っている問題は次のとおりです。
JDKとMySQLがTLSv1.2
の使用に同意しないのはなぜですか ?
どちらの当事者も実際にはTLSv1.2をサポートしていますが、発生した問題は、Connector/Jのデフォルトの動作によって発生します。互換性の理由から、Connector/JはデフォルトでTLSv1.2以降を有効にしません。したがって、明示的に有効にする必要があります。
次の
警告: ソリューションに注意してください jdk.tls.disabledAlgorithms
の編集を提案する jre/lib/security
の内部 セキュリティリスクをもたらす アプリケーションに変更を加えたり、何かを変更したりすると、深刻な影響が生じる可能性があります。これらのプロトコルが無効になっているのには理由があり、リストからすべてまたは一部を削除するだけではいけません。
注: 問題をデバッグするためにJDKからより低レベルの洞察を得たい場合は、次の構成をJavaコマンドに渡すことでsslデバッグログを有効にできます。
-Djavax.net.debug=ssl,handshake
または-Djavax.net.debug=all
あなたの場合、次のようなものが表示されます:
...(HANDSHAKE_FAILURE): Couldn't kickstart handshaking (
"throwable" : {
javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:170)
at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98)
...