一、问题描述:
项目工程需求要连接 SqlServer 服务器,但是报错了,完整错误如下:com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”。
翻译成中文:SqlServer 服务器只接受 TLS1.0,但是客户端给的是 TLS1.2。
二、解决方案:
找到 jdk11\conf\security 下java.security 文件
1. 把 jdk.tls.disabledAlgorithms 配置项中 TLSv1 删除,这样 TLS1.0 就可以使用了。
#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=MD5, SSLv3, DSA, RSA keySize < 2048, \
# rsa_pkcs1_sha1, secp224r1
#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