由JDK包引起的SqlServer数据库链接失败

148 阅读1分钟

一、问题的产生

公司新项目启动,我负责先把架子搭建起来,要求的是SqlServer数据库,很简单嘛,引入对应的pom,配置正确的驱动、数据库地址、账号和密码,满心欢喜的启动,结果报错:

Caused by: javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12] ······

原因描述:SqlServer服务器需要TLS1.0,但我们提供的是TLS1.3、TLS1.2

二、问题的解决

因为框架代码是直接从同事那儿拿过来的,所以直接去问了他,结果同样的代码,他正常启动,换了一个人的电脑也是一样,合着,就我的不行,于是开始在网上寻找各种解决办法,最终发觉是jdk包里一个java.security文件引发的问题,该文件在%JAVA_HOME%\jre\lib\security文件夹里。

找到其中的jdk.tls.disabledAlgorithms配置项,其配置的是jdk不生效的算法配置。就算大家都是JDK8,但也可能因为小版本的不同,导致这里的配置不一样,这也就是为什么别人的能启动的原因。

找到问题了,我们就解决问题,根据自己的报错信息提示来去除掉配置里面的算法,我这里是需要TLS10,也就是对应于TLSV1,将其删除掉即可,读者可根据自己面对的报错提示,移除对应的算法即可。

最后问题解决,项目启动成功,我也成功的没加班。

第一次写博客,写比较差,但为的就是后面遇到同样坑的兄弟能不在这个坑花太多时间,我的目的就达到了。