【问题标题】:Bouncy Castle: Creating CMS (a.k.a. PKCS7) certificate?Bouncy Castle:创建 CMS(又名 PKCS7)证书?
【发布时间】:2014-05-08 18:54:21
【问题描述】:

如何创建 CMS(又名 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 变量来构建它。

【问题讨论】:

    标签: ssl cryptography ssl-certificate bouncycastle pkcs#7


    【解决方案1】:

    没有 CMS 证书或 PKCS#12 证书之类的东西。

    CMS 是加密消息语法。它指定可能包含签名者的 X5.09 兼容证书的容器格式。 PKCS#12 是一种加密对象的容器格式,通常用于存储一个或多个证书/私钥对。 PKCS#9 明确定义了 X5.09 证书的属性。

    您可能只需要构建一个X5.09 certificate,可能使用PKCS#9 defined attributes。这些证书应该与 CMS 和 PKCS#12 兼容。

    【讨论】:

    • 感谢您澄清这个概念。那么我应该说一种 CMS 类型的加密消息/容器,以加载我新创建的客户端 X5.09 证书吗?如果是这样,那么实际上我如何使用充气城堡 API 创建这样的容器格式...?
    • 您可以尝试Beginning Cryptography with Java“并实施安全的 Java 应用程序并使用标准协议,例如 CMS”,作者之一是 David。或者查看示例代码。请注意,这本书并不是那么新,因此您可能需要稍微更新一下代码。是的,这就是一般的想法:)
    猜你喜欢
    • 2011-02-11
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2015-07-03
    • 2018-10-06
    • 2014-05-28
    • 2015-06-24
    相关资源
    最近更新 更多