在大量搜索之后,我没有找到如何在Java代码中创建以下命令:
openssl pkcs12 -cacerts -in /path/to/file.p12 -noout仅从此p12或openssl pkcs12 -clcerts -in /path/ to /file.p12 -noout获得ca证书以获得证书
在java中,我加载了file.p12,因此所有这些证书都存储在PKCS12密钥存储库中,但无法区分哪些是CA证书,哪些是简单证书。怎么做?
(在我的p12中,我有我的证书和签署它的N个CA证书: CA 2已经签署了证书,CA 3已经签署了CA 2证书. CA N已经签署了CA证书)
2)另一个同样的问题:是否有办法订购x509证书列表以获得(ca 1,.),我使用:
CertificateFactory certFact = CertificateFactory.getInstance("X.509");
CertPath path = certFact.generateCertPath(myCertifList);但这份清单必须已经被下令,这与我所希望的相反。
( 3)全链证书订单有保证吗?如果我们加密,例如,改变它的策略,改变构建链和全链的方式,我们不能依赖实际的证书订单?非常感谢您的帮助!
发布于 2016-11-10 17:17:30
P12的实际发布方式是:采用单一的PrivateKey和相应的Certificate Chain (通用互联网标准)。
您可以在以下链接中了解更多有关此内容的内容:PKCS#12、信任链和内侧CA。
通常(几乎所有时间),用户的证书将是链中的第一个证书(最重要),其次是最不重要的证书(Sub CA和CA's,CA是最后一个)。
几乎所有的软件和库都遵循这种方法。
因此,可以肯定地说,证书链将被排序(但是,可能链不完整,您只能拥有用户证书,或者CA证书可能在Sub CA的证书之后不存在。这在很大程度上取决于颁发P12/证书链的CA )。但是,您将在第一个(零)位置找到用户的证书。
如果您需要确保链是完整的和有序的,您可以有自己的防御方法来做到这一点。您可以根据证书的SubCA字段和IssuerDN字段标识证书类型(CA、IssuerDN或user)。
如果SubjectDN等于IssuerDN,那么它就是CA证书,然后标识下一个证书(SubCA),如果证书的IssuerDN等于CA的SubjectDN,那么它就是链中的下一个证书,依此类推。
https://stackoverflow.com/questions/40512762
复制相似问题