Java连接MySQL配置useSSL后连接报证书不信任:java.security.cert.CertPathValidatorException...

【异常日志】

Caused by: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
    at sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:153) ~[na:1.8.0_162]
    at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:79) ~[na:1.8.0_162]
    at java.security.cert.CertPathValidator.validate(CertPathValidator.java:292) ~[na:1.8.0_162]
    at com.mysql.jdbc.ExportControlled$X509TrustManagerWrapper.checkServerTrusted(ExportControlled.java:295) ~[mysql-connector-java-5.1.46.jar:5.1.46]
    ... 98 common frames omitted

【问题分析】

MySQL使用了SSL连接,但MySQL服务端配置SSL证书不受信任。

【解决方案】

方法一、(这种方法最简单)如果数据库所在的网络环境是绝对安全或者只是开发环境的情况下,可以直接忽略服务端证书信任验证。具体实现方法是在JDBC连接字符串中添加verifyServerCertificate=false参数。

jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=true&verifyServerCertificate=false

方法二、在可以获取到受信任证书的情况下,可以配置服务端证书为受信任的证书。具体实现方法是先将证书复制到MySQL服务器上,然后在MySQL的配置文件(Linux系统下确认为/etc/my.cnf)中添加配置。

[mysqld]
ssl-ca=/etc/mysql/ca-cert.pem
ssl-cert=/etc/mysql/server-cert.pem
ssl-key=/etc/mysql/server-key.pem

* 注: 其中的证书路径需要规换成正确的受信任证书存放路径。

方法三、也可以找到找到服务端的证书,后添加服务端CA证书到受信任的根证书颁发机构中。

转载于:https://my.oschina.net/u/2362245/blog/1799475

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值