背景:
项目在本地开发环境运行正常,发布到服务器抛出异常。
数据库:Microsoft SQL Server 2014 - 12.0.2000.8 (X64)
本地jdk版本:1.8.0_121
服务器jdk版本 :openjdk version "1.8.0_302"
异常信息:
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 [TLS12]".
解决方案:
1、参考stackoverflow:
Go to folder C:\Program Files (x86)\Java\jre1.8.0_291\lib\security In file java.security find option jdk.tls.disabledAlgorithms and delete TLSv1
找到Java\jre\lib\security目录中的java.security文件,删掉jdk.tls.disabledAlgorithms里面的 TLSv1。我试过后没什么用。
2、java.security中的jdk.tls.legacyAlgorithms修改为:
jdk.tls.legacyAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
DH keySize < 1024, EC keySize < 224, anon, NULL, \
include jdk.disabled.nameCurves
对我没用。
3、最后的解决办法是使用开发环境的java.security文件替换线上的java.security文件。