fix: 清除所有TLS和证书算法限制以支持旧版SQL Server

This commit is contained in:
Your Name 2026-01-05 17:17:21 +08:00
parent adecc00dff
commit 5bbb39c868

View File

@ -108,13 +108,15 @@ public class ThirdPartyDbService {
switch (config.getDbType().toLowerCase()) {
case "sqlserver":
driverClass = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
// 使用TLS 1.0协议连接旧版SQL Server
// 需要确保java.security中已移除TLSv1的禁用
// 使用TLS 1.0协议连接旧版SQL Server - 放宽所有安全限制
url = String.format("jdbc:sqlserver://%s:%d;databaseName=%s;encrypt=true;trustServerCertificate=true;TrustServerCertificate=true;hostNameInCertificate=*",
config.getHost(), config.getPort(), config.getDatabase());
// 在连接前设置系统属性以启用TLS 1.0
// 在连接前设置系统属性以启用TLS 1.0和旧版证书算法
System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");
java.security.Security.setProperty("jdk.tls.disabledAlgorithms", "SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL");
// 清除TLS禁用算法列表
java.security.Security.setProperty("jdk.tls.disabledAlgorithms", "");
// 清除证书路径禁用算法列表
java.security.Security.setProperty("jdk.certpath.disabledAlgorithms", "");
break;
case "mysql":
driverClass = "com.mysql.cj.jdbc.Driver";