You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 17环境下Spring Boot 2.7.5连接SQL Server 13失败求助

解决Java 17 + Spring Boot 2.7.5连接SQL Server 13的SSL证书算法约束问题

问题根源

Java 17默认安全策略收紧了加密算法限制,RSA 1024位密钥被列入禁用列表,而你的SQL Server 13使用的证书恰好是1024位RSA密钥,导致SSL连接触发算法约束校验失败。

可行解决方案

1. 临时放宽JVM安全约束(快速解决)

给Spring Boot应用添加JVM启动参数,移除对RSA 1024位密钥的限制:

-Djdk.tls.disabledAlgorithms="SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224"
-Djdk.certpath.disabledAlgorithms="MD2, MD5, SHA1 jdkCA & usage TLSServer, RSA keySize < 1024"

注意:此方法会降低JVM安全级别,仅建议在测试环境或无法更新服务器证书的临时场景使用。

2. 修改JDK全局安全配置(持久化解决)

找到Java 17安装目录下的conf/security/java.security文件,调整以下两个配置项:

  • 将jdk.tls.disabledAlgorithms中的RSA keySize < 2048替换为RSA keySize < 1024
  • 将jdk.certpath.disabledAlgorithms中的RSA keySize < 2048替换为RSA keySize < 1024

修改后保存文件,重启Spring Boot应用即可生效。

3. 升级JDBC驱动版本

你提到IntelliJ使用11.2.1驱动可正常连接,建议将项目依赖升级到com.microsoft.sqlserver:mssql-jdbc:11.2.1.jre17,该版本可能修复了Java 17下的证书兼容性问题。同时确保连接URL参数正确:

jdbc:sqlserver://{SERVER_URL};databaseName={你的数据库名};encrypt=true;trustServerCertificate=true;loginTimeout=30

4. 根源修复(推荐长期方案)

联系DBA将SQL Server 13的证书更新为RSA 2048位及以上密钥,符合Java 17安全规范,彻底解决兼容性问题。

为什么IntelliJ可以正常连接?

IntelliJ可能自带定制化JDK环境,或其内置JDBC连接客户端默认放宽了算法约束,因此能绕过该校验。

内容的提问来源于stack exchange,提问作者Brent Gammon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:50:37