【发布时间】:2017-03-23 14:31:34
【问题描述】:
经过大量搜索,我没有找到如何在 Java 代码中等效于以下命令:
openssl pkcs12 -cacerts -in /path/to/file.p12 -noout
仅从该 p12 获取 ca 证书或 openssl pkcs12 -clcerts -in /path/to/file.p12 -noout 获得证书
在 java 中,我加载 file.p12,因此所有这些证书都存储在 PKCS12 密钥库中,但无法区分哪个是 CA 证书,哪个是简单证书。该怎么做?
(在我的 p12 中,我有我的证书和 N CA 证书,它们已经签名: CA 2 已签署证书,CA 3 已签署 CA 2 证书...,CA N 已签署 CA N-1 证书)
2) 以同样的方式提出另一个问题: 有没有办法订购 x509 证书列表来获取 (ca 1, ... ca N),我用过:
CertificateFactory certFact = CertificateFactory.getInstance("X.509");
CertPath path = certFact.generateCertPath(myCertifList);
但是列表需要按照与我希望相反的顺序排列。
3) 全链证书订单是否有保证?例如,如果 Let's Encrypt 改变它的策略并改变构建链和全链的方式,我们不能依赖实际的证书订单怎么办? 非常感谢您的帮助!
【问题讨论】:
-
根 CA 证书是自签名的。自定义自签名证书的主要区别在于它们列在 Java 的受信任证书存储中。另请参阅this question。
标签: java openssl x509certificate keystore ca