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

如何配置Spring Boot通过SSL/TLS连接MariaDB并解决PKIX错误

Spring Boot 配置SSL/TLS连接MariaDB及PKIX错误解决

一、先修正JDBC URL的参数错误

你当前的连接字符串存在参数名拼写错误:

  • 错误参数:keystoreStore、keystoreStorePassword
  • 正确参数:keyStore、keyStorePassword(MariaDB JDBC驱动的标准参数名)

另外,MariaDB驱动更推荐使用sslMode替代useSSL,sslMode能明确指定SSL验证级别(如VERIFY_CA、VERIFY_IDENTITY),避免模糊配置。

二、解决PKIX路径构建失败错误

这个错误核心是Java信任库未包含MariaDB服务器的有效证书,导致无法验证服务器身份,按以下步骤处理:

1. 导出MariaDB服务器的证书

用openssl命令提取服务器证书:

openssl s_client -connect xyz:3306 -showcerts < /dev/null | openssl x509 -outform PEM > mariadb-server-cert.pem

替换xyz为你的MariaDB服务器地址,执行后会生成mariadb-server-cert.pem证书文件。

2. 将证书导入信任库

用keytool命令把证书导入到JKS格式的信任库(无信任库时会自动创建):

keytool -importcert -file mariadb-server-cert.pem -alias mariadb-server -keystore truststore.jks

执行时需设置信任库密码(比如你的mypwd),输入yes确认信任该证书。

3. 放置证书文件到正确位置

将生成的truststore.jks(若需双向认证,还要放客户端密钥库keystore.jks)放到Spring Boot项目的src/main/resources目录下。如果放在子目录(如resources/ssl),路径需对应调整为classpath:/ssl/truststore.jks。

三、正确的JDBC连接配置示例

情况1:单向SSL认证(仅验证服务器身份)

spring:
  datasource:
    url: jdbc:mariadb://xyz:3306/test?sslMode=VERIFY_CA&trustStore=classpath:/truststore.jks&trustStorePassword=mypwd
    username: your-username
    password: your-password

sslMode=VERIFY_CA表示验证服务器证书是否由信任库中的CA签发;若需验证服务器主机名与证书一致,改用sslMode=VERIFY_IDENTITY。

情况2:双向SSL认证(服务器验证客户端,客户端也验证服务器)

spring:
  datasource:
    url: jdbc:mariadb://xyz:3306/test?sslMode=VERIFY_CA&trustStore=classpath:/truststore.jks&trustStorePassword=mypwd&keyStore=classpath:/keystore.jks&keyStorePassword=mypwd
    username: your-username
    password: your-password

注意:双向认证需MariaDB服务器端已配置信任客户端证书,否则连接会失败。

四、额外检查项

  • 确认信任库和密钥库的密码与配置完全一致,密码错误会直接导致认证失败。
  • 若使用非JKS格式的密钥库(如PKCS12),需添加trustStoreType=PKCS12或keyStoreType=PKCS12参数。
  • 确保MariaDB服务器已开启SSL功能,且配置的证书有效未过期。

内容的提问来源于stack exchange,提问作者Mittal Vaghela

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 04:31:12