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

Spring Boot连接SQL Server时TLS版本不兼容问题求助

解决Java 17连接SQL Server的TLS协议不匹配问题

问题核心

Java 17默认禁用了TLS 1.0这类弱加密协议,而你的SQL Server仅启用了TLS 1.0,导致客户端与服务端无法协商出兼容的SSL协议版本,从而抛出连接错误。

推荐解决方案(安全合规):升级SQL Server的TLS版本

优先建议在SQL Server所在服务器上启用TLS 1.2或更高版本,同时禁用TLS 1.0,步骤如下:

  • 打开注册表编辑器,导航至HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
  • 针对TLS 1.2:
    • 新建TLS 1.2项,在其下分别创建Client和Server子项
    • 在Client和Server项下各新建两个DWORD值:DisabledByDefault设为0,Enabled设为1
  • 针对TLS 1.0:
    • 找到已存在的TLS 1.0项(若无则忽略),将其Client和Server项下的Enabled设为0,DisabledByDefault设为1
  • 重启SQL Server所在服务器,使配置生效

完成后,Java 17默认支持TLS 1.2,无需额外修改客户端配置即可正常连接。

临时方案(仅用于测试/无法升级服务端场景)

若暂时无法升级服务端,需修改Java 17的配置以启用TLS 1.0支持:

  1. 修正数据源URL参数
    原URL中的database参数错误,SQL Server JDBC驱动的正确参数为databaseName,修正后URL:
    jdbc:sqlserver://192.xyz.x.xy;databaseName=apr.pro;encrypt=true;trustServerCertificate=true
    
  2. 调整VM启动参数
    添加VM参数,指定允许的TLS协议:
    -Djdk.tls.client.protocols=TLSv1,TLSv1.1,TLSv1.2
    
  3. 修改Java安全配置
    找到Java 17安装目录下的conf/security/java.security文件,定位到jdk.tls.disabledAlgorithms行,移除其中的TLSv1条目,保存后重启应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:52:40