java:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接:“The server selected protocol version TLS10 is not a

Posted 左直拳

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接:“The server selected protocol version TLS10 is not a相关的知识,希望对你有一定的参考价值。

jdk1.8的较高版本有些设置做了调整,修改%JAVA_HOME%/jre/lib/security/java.security。

题目限制了字数,完整错误是这样的:

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

有同事在统信下,用java程序去访问sql server,不料报了上面的错。拿到windows下运行,又没问题。难道是统信的问题?幸好另外一个同事拿到自己的统信下跑,没有问题,得以排除操作系统的原因。多方比较,是JDK版本的缘故。虽然都是JDK1.8,但后面的小数位版本号有所差别。较高的会报错。查找网上文章,屏蔽了%JAVA_HOME%/jre/lib/security/java.security一些设置,问题解决。

为稳妥起见,和方便日后对照,我复制了jdk.tls.disabledAlgorithms的设置,然后将TLSv1、TLSv1.1、3DES_EDE_CBC从禁止名单中剔除:

由上也可知,之所以高版本的JDK会报错,是因为它们被禁用了,disabledAlgorithms,algorithms是算法的意思。如果用“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接”去网上搜索,绝大部分文章都是抄来抄去,说将3DES_EDE_CBC去掉即可,但其实我们的情况有些差别,错误提示得很清楚,涉及到TLS。但同事搞来搞去,几天过去都没搞定,这可能与他只用中文去搜索有关。

参考文章:
The server selected protocol version TLS10 is not accepted by client preferences [TLS12]

以上是关于java:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接:“The server selected protocol version TLS10 is not a的主要内容,如果未能解决你的问题,请参考以下文章

驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接 异常解决方法

java:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接:“The server selected protocol version TLS10 is not a

详解:驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server 建立安全连接。

驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

驱动程序无法使用安全套接字层 (SSL) 加密建立与 SQL Server 的安全连接。错误:“意外重新抛出”

jdbc连接sqlserver2008时报错 "驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接"