问题描述:
连接 SQL Server 时,报错:
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]
问题环境:
- jdk 1.8
- Sql Server驱动依赖
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>4.0</version>
</dependency>
Tip: 这里本地Maven库可能找不到,需要将jar包,安装到Maven库。命令如下:
mvn install:install-file -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0 -Dpackaging=jar -Dfile=D:\memorry\jar\sqljdbc4.jar
- 连接配置:
spring:
datasource:
cs:
username: cstest
password: cstest
jdbc-url: jdbc:sqlserver://localhost:1433;DatabaseName=cstest
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
解决方案:
经过分析错误信息其实已经很明显,客户端client引用的协议版本是TLS12、TLS13即TSL1.2、TSL1.3的版本,而服务端The server selected选择的协议版本还是TSL10即TSL1.0,故报错!
JDK1.8的安全策略里面,把低版本TSL1.0的安全算法禁用了,我们把它取消禁用就可以了。
操作步骤:
- 1.首先找到JDK的安装路径,本机默认安装在C盘,路径为C:\Program Files\Java\jdk1.8.0_341,找到C:\Program Files\Java\jdk1.8.0_341\jre\lib\security路径下的java.security文件。
- 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, \
include jdk.disabled.namedCurves
将其中的TLSv1删除掉或者注释掉即可!
Tip: 如果错误还在,则把下面目录中的java.security都修改掉即可!
评论前必须登录!
注册