如何配置Java客户端允许TLS10协议连接旧版MSSQL数据库
Java 16开启TLS1.0支持连接旧版MSSQL解决方案
报错说明
你遇到的报错内容为:
"...server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]..."
该报错是因为Java 16默认将TLS1.0、TLS1.1加入了安全禁用列表,仅允许TLS1.2、TLS1.3协议通讯,无法兼容仅支持TLS1.0的旧版未维护MSSQL实例。
方案1:Eclipse项目临时配置(仅对当前项目生效,推荐)
- 打开Eclipse顶部菜单栏
Run->Run Configurations - 找到当前测试连接对应的Java应用运行配置
- 切换到
Arguments标签页,在VM arguments输入框中添加以下参数:
-Djdk.tls.client.protocols="TLSv1,TLSv1.1,TLSv1.2,TLSv1.3"
- 保存配置后重新运行项目即可生效
方案2:修改JDBC连接参数(仅对当前数据库连接生效)
在原有的MSSQL JDBC连接URL中新增enabledTlsProtocols参数,指定允许的TLS协议版本,示例如下:
jdbc:sqlserver://<数据库IP>:<端口>;databaseName=<数据库名>;enabledTlsProtocols=TLSv1,TLSv1.1,TLSv1.2;encrypt=true;trustServerCertificate=true;
方案3:修改JDK全局安全配置(对所有使用该JDK的项目生效)
- 找到Java 16安装目录下的配置文件:
conf/security/java.security,修改前建议备份原文件 - 搜索找到
jdk.tls.disabledAlgorithms配置项,删除配置值中的TLSv1, TLSv1.1条目,保存修改 - 重启Eclipse和项目后即可生效
注意事项
TLS1.0属于已被废弃的不安全协议,存在严重的安全漏洞风险,以上方案仅为临时适配旧版未维护的MSSQL实例使用,长期来看建议优先升级MSSQL实例,开启高版本TLS协议支持。
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

