升级到 Java 8u292 后,TLS 连接失败并出现 SSLHandshakeException

Dav*_*gne 5 java ssl sslhandshakeexception

我有一台运行 WildFly 21.0.2 的 LXC CentOS 7 主机。应用程序服务器使用双向 TLS 连接(相互身份验证)和 MySQL Connector/J 5.1.47 JDBC 驱动程序连接到 MariaDB 10.4.18 数据库。它运行良好,直到昨天发生从 Java 8u282 升级到 Java 8u292。现在连接失败并出现以下错误:

IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: IJ031084: Unable to create connection
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
Caused by: javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是 Java 8u292 弃用了用于通过 MySQL Connector/J 5.1.47 JDBC 驱动程序建立连接的协议或密码套件。

Dav*_*gne 8

JDK 8 和 JDK 8 更新版本综合发行说明表明TLS 1.0 和 TLS 1.1 在 Java 8u292 中已被禁用,我的目标是从那时起强制连接使用 TLS 1.2。

我尝试将 JDBC 驱动程序升级到 MySQL Connector/J 5.1.49,这是此时的最新版本,但没有任何改进。

最后,enabledTLSProtocols似乎是最好的选择,并且在添加enabledTLSProtocols=TLSv1.2连接 URL后,应用服务器成功建立了连接。