我是密码学新手,如果您认为这是一个基本问题,请原谅
我有一个 .p7b 文件,我需要读取并提取各个公共证书,即 .cer 文件并将其存储在密钥存储中。我不必担心密钥存储中的持久性,因为已经有一个服务将 .cer 文件作为byte[]并保存它。
我想知道的是,如何读取 .p7b 并提取单个 .cer 文件?我知道这可以通过 openSSL 命令来完成,但我需要在 java 中做同样的事情。我还需要阅读由...发出名称,因为它将用作保存证书的唯一密钥。
提前致谢
您可以使用 BouncyCastle 从 PKCS#7 对象获取证书。这是一个快速代码示例:
public Collection<X59Certificate> getCertificates(String path) throws Exception
{
Security.addProvider(new BouncyCastleProvider());
CMSSignedData sd = new CMSSignedData(new FileInputStream(path));
X509Store store = sd.getCertificates("Collection", "BC");
Collection<X509Certificate> certificates = store.getMatches(X509CertStoreSelector.getInstance(new X509CertSelector()));
return certificates;
}
请注意,PKCS#7 可能包含多个证书。大多数情况下,它包括在最终用户证书和根 CA 之间构建证书链所需的中间证书颁发机构证书。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)