SQL Server JDBC 驱动 和 TLS 版本不兼容 的问题

 今天写定时任务同步SQL server数据库的时候,在连接数据库的时候报错,检测到当前数据库使用的协商使用的是 TLSv1 协议,而项目中使用的时jdk17,它的协议版本高,不兼容 TLSv1 协议。

由于是和医院对接,医院使用的SQL server数据库,版本很低,不能改医院的版本,只能修改Java代码了,更改jdk配置文件,并修改SQL server的驱动版本。

 在Java代码层面使用jdbc驱动连接SQL server数据库时报错:TLSv1 was negotiated.Please update server and client to use TLSvl.2 at minimum。检测到当前协商使用的是 TLSv1 协议,请将服务器和客户端升级至最低 TLSv1.2 版本以增强安全性

1.报错原因:

客户端和服务器之间的 SSL/TLS 协商使用了 TLSv1,但建议至少使用 TLSv1.2。这通常是因为客户端或服务器的配置较低,或者客户端和服务器之间的 TLS 版本不匹配。

2.解决方案:

 2.1打开jdk配置文件,修改配置,降低协议的版本号。

打开本地jdk17的目录进入\conf\security,找到java.security文件并打开。大约在726行,原来是这样的:

jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \

    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL

将其替换

#TLSv1, TLSv1.1,

jdk.tls.disabledAlgorithms=SSLv3,  RC4, DES, MD5withRSA, \

    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL

2.2.打开项目中的pom.xml文件,找到SQL server的驱动包 并将其替换为低版本:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>sqljdbc4</artifactId>
    <version>4.0</version>
</dependency>

这样就能连接成功了! 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值