从Java中的.p7b文件提取单个.cer证书

我是密码学的新手,所以如果您认为这是一个基本问题,请原谅

我有一个.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之间建立证书链所需的中间证书颁发机构证书.

上一篇:c#-无法使用X509客户端证书连接到HTTPS


下一篇:java-如何以编程方式访问窗口和mac可信证书存储