You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 11.0.9连接MySQL 5.6时AWS EC2 Linux服务器出现SSLHandshakeException问题求助

解决Java 11 + MySQL 5.6在AWS EC2上的SSL握手异常

我之前也碰到过一模一样的问题!这本质是Java 11和MySQL 5.6之间的TLS协议兼容问题——Java 11默认禁用了TLSv1.0和TLSv1.1这些旧协议,但MySQL 5.6默认依赖这些协议建立SSL连接,而你的本地环境可能悄悄调整过配置,所以没出问题。下面给你几个靠谱的解决办法:

方法1:修改JDBC连接URL(快速验证)

直接在你的数据库连接URL里添加enabledTLSProtocols参数,强制驱动使用兼容的旧协议:

jdbc:mysql://your-db-host:3306/your-db-name?useSSL=true&enabledTLSProtocols=TLSv1,TLSv1.1

这个方法最快捷,不需要修改服务器配置,重启应用就能生效,适合快速验证问题根源。

方法2:调整Java安全配置(全局生效)

如果需要让EC2上的所有Java应用都兼容旧协议,可以修改Java的安全配置文件:

  1. 找到EC2上Java 11安装目录下的conf/security/java.security文件(通常路径类似/usr/lib/jvm/java-11-openjdk-amd64/conf/security/java.security)
  2. 找到jdk.tls.disabledAlgorithms这一行,把其中的TLSv1和TLSv1.1从禁用列表中移除
    比如原来的配置可能是:
    jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, ...
    
    修改后变成:
    jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, ...
    
  3. 重启你的Java应用,让配置生效

⚠️ 注意:这个修改会影响EC2上所有使用该JVM的应用,如果你还有其他服务运行在同一个JVM下,要确认它们也能兼容启用这些旧协议。

方法3:升级MySQL版本(长期最优方案)

MySQL 5.6已经在2021年停止了官方维护,不仅存在安全隐患,还会越来越多地碰到这类兼容性问题。建议你升级到MySQL 5.7或8.0版本,这些版本默认支持TLSv1.2及以上协议,和Java 11的默认安全配置完美兼容,从根本上解决这类问题。

你可以先试试方法1,确认问题解决后,再考虑长期的升级方案。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 05:42:41