JDBC 连接 SQL Server 报 SSL connection 错误解决

Posted by aclyyx on 08-29,2018

no_sql_server

系统环境

  • 操作系统:Windows 2003
  • 数据库:SQL Server 啥版本不知道
  • Jre版本:v1.8
  • JDBC版本:6.4.0.jre8

错误

测试时系统是Windows 2008 R2使用配置过后,JDBC可以正常连接;但Windows 2003没有对应设置的方法,一直报错“JDBC Could not establish SSL connection ... ...”。

com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]". ClientConnectionId:fe60dc10-3e43-45db-985d-5dc6a819bf52

解决

最终在 stackoverflow 找到了解决方法。

修改 Jre 目录中的 /lib/security/java.security 文件,找到设置jdk.tls.disabledAlgorithms的位置,类似如下:

如果 Java 版本为 zulu 则 java.security 文件在 ...Zulu_Java路径.../conf/security

jdk.tls.disabledAlgorithms=SSLv3, RC4, MD5withRSA, DH keySize < 768, 3DES_EDE_CBC, DESede, \ EC keySize < 224

去掉3DES_EDE_CBC后保存退出。
原文说是要去掉两项(3DES_EDE_CBC, DESede),当我没有找到DESede,也就没管。
问题也就解决了。

参考

【stackoverflow】JDBC Could not establish SSL connection (Domino Java Agent FP 9) to SQL Server