目录
错误信息:The server selected protocol version TLS10 is not accepted by client preferences [TLS12]
一、场景描述:
Eclipse4.7 java EE版;
SQL Server 2012;
JDK 1.8;
JDBC 驱动版本mssql-jdbc-6.4.0.jre8.jar
在Eclipse下使用JDBC驱动程序连接SQL Server 2012数据库,报错信息如下:
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”。 ClientConnectionId:12d300ee-beb1-4677-80da-8936f5f80aac
com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。
错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”。
ClientConnectionId:12d300ee-beb1-4677-80da-8936f5f80aac
网上的解决方法,铺天盖地都是JDK版本问题,但是似乎都解决不了主要问题。
二、解决方法(实测通过)
再次关注一下错误信息
The server selected protocol version TLS10 is not accepted by client preferences [TLS12]
错误信息其实已经很明显,客户端client引用的协议版本是TLS12即TSL1.2的版本
而服务端The server selected选择的协议版本还是TSL10即TSL1.0,故报错!
JDK1.8的安全策略里面,把低版本TSL1.0的安全算法禁用了,我们把它取消禁用就可以了。
具体操作步骤如下:
1.首先找到JDK的安装路径,本机默认安装在C盘,路径为C:\Program Files\Java\jdk1.8.0_291,找到C:\Program Files\Java\jdk1.8.0_291\jre\lib\security路径下的java.security文件,没看错,文件的后缀是.security
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
include jdk.disabled.namedCurves
2.修改里面的jdk.tls.disabledAlgorithms配置信息,禁用的算法目前有
jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \
将其中的TLSv1删除掉或者注释掉即可!
查找一下,务必不要改错地方!
三、注意事项
在后续验证过程中发现经过上述操作,似乎错误还在!
那么请注意确认JAVA的安装路径下是否有JDK和JRE,若有,都要改过来才可以!!!
测试机器的JAVA8安装路径如下:C:\Program Files\Java
要保证JDK下面的C:\Program Files\Java\jdk1.8.0_291\jre\lib\security\java.security和JRE下面的 C:\Program Files\Java\jre1.8.0_291\lib\security\java.security都要改掉才可以!
1.JDK下面的C:\Program Files\Java\jdk1.8.0_291\jre\lib\security\java.security
2.JRE下面的 C:\Program Files\Java\jre1.8.0_291\lib\security\java.security
四、测试运行效果
测试成功之后的运行效果截图: