如何创建CMS(a.k.a. PKCS7)证书?
以下充气城堡代码创建了PKCS12证书:
ASN1EncodableVector v = new ASN1EncodableVector();
v.add(tbsCert);
v.add(sigAlgId);
v.add(new DERBitString(signature));
X509CertificateObject clientCert = new X509CertificateObject(Certificate.getInstance(new DERSequence(v)));
PKCS12BagAttributeCarrier bagCert = clientCert;
bagCert.setBagAttribute(PKCSObjectIdentifiers.pkcs_9_at_friendlyName,
new DERBMPString("Certificate for IPSec WLAN access"));
bagCert.setBagAttribute(
PKCSObjectIdentifiers.pkcs_9_at_localKeyId,
new SubjectKeyIdentifierStructure(pubKey));
我发现API中有CMSSignedDataGenerator,但如果它适用于我的情况,我不是,如果适用的话......
我也不明白为什么,如果创建的证书是PKCS12,那么为什么他们使用PKCS9变量来构建它。
答案 0 :(得分:2)
没有CMS证书或PKCS#12证书。
CMS是加密消息语法。它指定了可能包含签名者的X5.09兼容证书的容器格式。 PKCS#12是加密对象的容器格式,它通常用于存储一个或多个证书/私钥对。 PKCS#9明确定义了X5.09证书的属性。
您可能只需要构建X5.09 certificate,可能使用PKCS#9 defined attributes。这些证书应与CMS和PKCS#12兼容。