Spring MVC应用登录后遇javax.net.ssl.SSLHandshakeException异常求助
解决SQL Server JDBC SSL连接错误:No appropriate protocol
1. 调整JVM SSL协议启用规则
JVM默认可能禁用了SQL Server所需的旧版TLS协议,需修改JVM安全配置:
- 找到JRE安装目录下的
lib/security/java.security文件 - 定位
jdk.tls.disabledAlgorithms配置项,移除其中的TLSv1、TLSv1.1(如果存在) - 重启应用服务
也可通过启动参数临时调整(无需修改配置文件):
-Djdk.tls.disabledAlgorithms=SSLv3,RC4,MD5withRSA,DH keySize < 1024,EC keySize < 224
2. 修改JDBC连接字符串参数
在连接字符串中明确指定SSL相关参数:
- 强制指定TLS版本并信任服务器证书:
jdbc:sqlserver://localhost:1433;databaseName=yourDB;encrypt=true;trustServerCertificate=true;sslProtocol=TLSv1.2
- 若环境允许(如内部测试网络),可直接关闭SSL加密:
jdbc:sqlserver://localhost:1433;databaseName=yourDB;encrypt=false
3. 检查SQL Server端SSL配置
确认SQL Server支持的TLS版本及SSL状态:
- 打开SQL Server配置管理器
- 展开「SQL Server网络配置」,选择目标实例的协议
- 右键「TCP/IP」→ 属性,在「证书」标签确认SSL证书配置,「IP地址」标签核对端口
- 重启SQL Server服务使配置生效
4. 确保驱动与JDK版本兼容
SQL Server JDBC驱动版本需和JDK版本匹配:
- JDK 8:适配mssql-jdbc 6.4.x ~ 9.4.x版本
- JDK 11及以上:使用mssql-jdbc 10.x及更高版本
内容的提问来源于stack exchange,提问作者Rushikesh
相关产品推荐
相关产品推荐

