我是密码学的新手,所以如果您认为这是一个基本问题,请原谅
我有一个.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之间建立证书链所需的中间证书颁发机构证书.