将一个或多个X509Certificatififificate将其保存到PKCS#7文件 /容器中



我有多个x509certificates。现在,我想将其中一个或多个保存到带有Java的PKCS#7文件/容器中。

我可以从PKCS#7文件中阅读一个或多个证书,但是我不知道如何将它们写入PKCS#7文件。我只知道该文件中的数据是PEM编码的,并且此数据在标签--- BEGINN PKCS7 ------ END PKCS7 ---中。

首先,阅读PKCS#7/CMS的整个RFC,以更好地理解。请关注此RFC链接。

为了轻松实施,请使用Bouncycastle库。现在,有不同类型的PKCS#7.CMS数据(例如SignedData,emploweddata等)。让我们采取措施,您想使用签名格式。然后,您需要生成CMSSignedData数据。为此,您需要准备私钥和证书链。我假设在这里,您已经拥有了。现在准备cmsprocessablebytearray。 cmsprocessablebytearray的示例代码:
CMSProcessableByteArray msg = new CMSProcessableByteArray("Hello World".getBytes());

HEN声明CMSSIGNEDDATAGENERATOR并添加SignerInfo和证书。

CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
gen.addSignerInfoGenerator(new JcaSignerInfoGeneratorBuilder(......));
gen.addCertificates(certs);

然后使用CMSSignedDatagenerator和CMSProcessableByTearray生成CMSSignedData。

CMSSignedData cmsData = gen.generate(msg, true);

现在,有两种格式供您写入:pem和der中的文件。您想在PEM编码中写入。因此,将整个数据取在ContentInfo中。

ContentInfo ci = ContentInfo.getInstance(ASN1Object.fromByteArray(signedData));

现在,使用PemWriter以P7B格式编写ContentInfo对象。打开文件并查看用户证书。

PEMWriter pemWriter = new PEMWriter(new FileWriter("Demo-CMS.p7b"));
pemWriter.writeObject(obj);
pemWriter.flush();
pemWriter.close();

相关内容

  • 没有找到相关文章

最新更新