如何使用SSL设置mySql JDBC连接

时间:2017-04-21 16:20:35

标签: java mysql ssl

jdbc:mysql://localhost:3306/MyDb?verifyServerCertificate=true&useSSL=true&requireSSL=true

我从mySql服务器下载了公共证书并将其放入如下的cacerts:

keytool.exe -import -alias mysql_dev \
    -keystore /c/dev/tools/Java/jre1.8.0_131/jre/lib/security/cacerts \
    -file rds-combined-ca-bundle.pem

我使用keytool生成了新密钥,如下所示:

keytool.exe -genkeypair -alias adam \
               -keypass changeit \
               -keysize 1024 \
               -keystore /c/dev/.secure/haa2xt.jks \
               -storepass changeit

现在我可以看到Java正在从密钥库中获取密钥,从信任库中获取服务器证书,但我仍然收到PKIX错误。

  

PKIX路径构建失败:   sun.security.provider.certpath.SunCertPathBuilderException:无法   找到所请求目标的有效证书路径

我将这个调试参数添加到命令行并获得了一些看起来很好的信息,我可以在那里看到mySql证书。

-Djavax.net.debug=all
  

trustStore是:c:\ dev \ tools \ java \ jdk1.8.0_131 \ jre \ lib \ security \ cacerts

     

trustStore类型是:jks

[.....]

  

keyStore是:C:/dev/.secure/haa2xt.jks

     

keyStore类型是:jks

     

keyStore提供者是:

     

init keystore

     

类型为SunX509的init keymanager

     

***找到了关键:adam

我做错了什么?

1 个答案:

答案 0 :(得分:0)

事实证明,keytool import命令只会在有多个证书时导入PEM文件中的第一个证书。

这是我唯一检查的那个,所以我认为实际上大约有15个我仍然没有进口。但

我使用此工具将它们全部导入:https://github.com/use-sparingly/keyutil