想象一下,我有 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 个“父母”的证书条目。