Eclipse环境下Java Tomcat连接SQL Server时TLS版本不兼容问题如何解决
解决SQL Server连接时TLS10协议不兼容问题
方案1:升级SQL Server的TLS协议版本(优先推荐)
TLS10属于不安全的旧协议,优先升级服务器端的TLS版本:
- 在SQL Server所在服务器上打开注册表编辑器(运行
regedit即可) - 定位到路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols - 分别新建
TLS 1.1和TLS 1.2的子项,每个子项下方再创建Client和Server两个子项 - 在每个
Client和Server子项中,新建DWORD(32位)值,命名为Enabled,值设为1;再新建一个DWORD值,命名为DisabledByDefault,值设为0 - 重启SQL Server服务和服务器,新的TLS协议即可生效
方案2:调整Java客户端的TLS配置(临时应急)
如果暂时无法升级SQL Server,可修改Java启动参数,让客户端接受TLS10:
- 在Eclipse中找到Tomcat服务器配置,点击Open Launch Configuration
- 切换到Arguments标签页,在VM arguments中添加以下参数:
-Djdk.tls.client.protocols=TLSv1.2,TLSv1.1,TLSv1 - 保存配置后重启Tomcat即可
- 也可直接修改Tomcat的启动脚本:Windows系统编辑
catalina.bat,Linux系统编辑catalina.sh,在文件开头添加对应内容:
Windows:
Linux:set JAVA_OPTS=%JAVA_OPTS% -Djdk.tls.client.protocols=TLSv1.2,TLSv1.1,TLSv1export JAVA_OPTS="$JAVA_OPTS -Djdk.tls.client.protocols=TLSv1.2,TLSv1.1,TLSv1"
额外检查项
- 确认SQL Server驱动版本,建议使用最新的
mssql-jdbc驱动(至少7.0版本以上),旧驱动可能默认不支持高版本TLS - 检查Java版本,Java 8u161及以上默认启用TLS1.2,若使用更低版本,需手动开启TLS1.2支持
内容的提问来源于stack exchange,提问作者kamran
相关产品推荐
相关产品推荐

