Java上的SSLexception:Path不与任何信任锚链接

我正在尝试使用MySQL Connector/J (版本5.1.45 )和此AWS RDS证书在Java建立与MySQL database的SSL连接: https : 5.1.45 CA-bundle.pem

但我得到以下Exception

 java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors 

我可以将这个Exception追溯到line 297MySQL Connector/J class ExportControlled.java

 CertPathValidatorResult result = this.validator.validate(certPath, this.validatorParams); 

然后我无法继续下去,因为它进入JRE安全类,如CertPathValidator

由于我使用MySQL Connector/J来完成整个SSL魔术,我的双手并列,我不知道发生了什么或如何解决这个问题。 证书在MySQL WorkbenchIntelli J IDEA Database ,所以我不知道为什么它现在被拒绝了。

我该如何解决?

我经历了很多令人头疼的问题后解决了这个问题。 信任库需要拥有链的所有证书,我使用https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem ,其中INORYORY拥有所有证书,但是当你将它导入密钥库文件, keytool忽略除第一个证书之外的所有文件,因此我的密钥库上只有根证书,而不是我实际需要的根和AWS Region证书。

目前,没有办法bach导入所有证书,我尝试了几种方法,包括转换为PKCS7(支持证书链),但keytool需要每个证书一个别名,所以你需要导入每个证书并给它一个别名,一个当时。

您可以创建一个程序来调用keytool并一次加载一个证书,或者您可能会像我一样懒得并使用KeyStore Explorer 。 您需要选择创建新的密钥库文件并使用“ Examine File选项打开捆绑的pem证书,并为其上的每个证书选择“ import ,这会将选定的证书导入新的密钥库。 最后,您只需为密钥库文件定义密码并保存即可。

几个小时前,当我转到5.1.45时,我得到了完全相同的错误。

现在尝试使用5.1.42来查看问题是否消失。