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 297
的MySQL Connector/J
class ExportControlled.java
:
CertPathValidatorResult result = this.validator.validate(certPath, this.validatorParams);
然后我无法继续下去,因为它进入JRE
安全类,如CertPathValidator
。
由于我使用MySQL Connector/J
来完成整个SSL
魔术,我的双手并列,我不知道发生了什么或如何解决这个问题。 证书在MySQL Workbench
和Intelli 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
来查看问题是否消失。