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

Spring Boot Starter Parent 2.7.*版本连接SQL Server数据库失败

Spring Boot 2.7.*连接SQL Server出现SSL证书错误的原因及解决办法

可能的问题原因

  • JDBC驱动版本默认升级:Spring Boot 2.7.相比2.6.,默认依赖的mssql-jdbc驱动版本更高。新版本驱动默认启用了严格的SSL证书校验(默认trustServerCertificate=false),而旧版本驱动可能默认允许跳过证书校验,或者对证书的处理逻辑不同,导致之前无需配置就能连接,升级后触发证书信任问题。
  • 数据源默认配置变更:Spring Boot 2.7.*在数据源自动配置上有细微调整,可能移除了某些隐式的SSL兼容配置,使得原本被覆盖的证书校验逻辑生效。

解决办法

1. 临时跳过证书校验(开发环境适用)

在数据库连接URL中添加trustServerCertificate=true参数,让客户端信任服务器的证书,无需导入到本地信任库:

spring.datasource.url=jdbc:sqlserver://your-server:1433;databaseName=your-db;trustServerCertificate=true

2. 导入证书到JVM信任库(生产环境推荐)

将SQL Server的SSL证书导入到JVM的信任证书库中,步骤如下:

  • 导出SQL Server的证书(可通过SQL Server配置工具或浏览器访问数据库端口获取);
  • 使用keytool命令导入证书到JRE的cacerts文件(默认路径:$JAVA_HOME/jre/lib/security/cacerts):
keytool -importcert -file /path/to/sqlserver-cert.cer -alias sqlserver-cert -keystore $JAVA_HOME/jre/lib/security/cacerts

默认证书库密码为changeit,执行后按提示确认导入即可。

3. 锁定JDBC驱动版本(临时兼容方案)

如果暂时不想适配新版本驱动,可以在pom.xml中指定2.6.*版本使用的mssql-jdbc版本,强制降级驱动:

<dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>9.4.1.jre8</version> <!-- 替换为2.6.*使用的驱动版本 -->
</dependency>

注意:此方案仅作为临时过渡,长期建议适配新版本驱动及标准SSL配置。

内容的提问来源于stack exchange,提问作者S-Wing

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 07:18:11