假设我有一个包含私钥和公钥证书的p12容器。当我使用Java keytool将p12公共证书导出到单独的.cer文件时,我可以单击.cer文件并查看完整的证书链。如何在程序中以编程方式获取完整路径?
我进行了一些调查。我使用了keytool的print cert -v
命令,并看到了属性AuthorityInfoAccess
及其子属性。
accessMethod: caIssuers
accessLocation: URIName: http://.../some.crt
我下载了一个名为some.crt(它是PEM证书),然后再次使用print cert -v
,看到了accessLocation: URIName: http://.../some2.crt
,并重复下载.crt文件并获取父级,直到达到没有此属性的根.crt。
我认为,我应该像上面描述的那样以编程方式下载链,并将其提供给CertPathValidator
,如这里所示。
如果我真的需要按照上述方式获取链,是否已经有任何库可以实现这一点?是否有使用std lib的方法?我没有找到bouncycastle的示例和Java标准库代码,例如
java.security.cert.Certificate[] cchain = keystore.getCertificateChain(alias);
返回实际具有2个“父级”的证书的一个条目。