项目需要Springboot使用Mybatis-plus多数据源同时连接mysql和sqlserver2012,连接sqlserver2012的时候遇到了一些波折。

首先是错误:

[08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]”

解决方法:我的java版本是11,编辑C:\Program Files\Java\jdk-11.0.13\conf\security\java.security文件,找到jdk.tls.disabledAlgorithms这一行,我改为:

jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
    include jdk.disabled.namedCurves

把TLSv1, TLSv1.1删除掉。

而后又报错:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

这是sqlserver证书存放的问题,这里有很多解决方法,大家可以自行搜索。我这里用了一个暂时的的方法:在sqlserver连接url后加上了

;TrustServerCertificate=True

实际中,对于前面的错误,我认为应该也可以在Sqlserver2012服务器中进行对应的修改,但是为不影响其它旧的应用,先这样。后者,应该用更根本的方法解决,还要搬砖,先记下,未来完善。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐