【问题标题】:How can I create a CA root certificate with Bouncy Castle?如何使用 Bouncy Castle 创建 CA 根证书?
【发布时间】:2015-10-15 14:25:05
【问题描述】:

我需要使用 Bouncy Castle 创建一个 X509 证书作为 CA 证书。 证书将手动添加到 Web 浏览器的受信任 CA 列表中。它将用于签署服务器证书。

我该怎么做? 除了通常的证书属性外,还必须包括一些额外的东西(关键属性说这是 CA,...)。

它至少应该在最重要的浏览器中工作(当然只在那些允许配置根 CA 的浏览器中)。

【问题讨论】:

标签: java https bouncycastle x509 ca


【解决方案1】:

我这样做了:

KeyPairGenerator rsa = KeyPairGenerator.getInstance("RSA");
rsa.initialize(4096);
KeyPair kp = rsa.generateKeyPair();

Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, 1);

byte[] pk = kp.getPublic().getEncoded();
SubjectPublicKeyInfo bcPk = SubjectPublicKeyInfo.getInstance(pk);

X509v1CertificateBuilder certGen = new X509v1CertificateBuilder(
        new X500Name("CN=CA Cert"),
        BigInteger.ONE,
        new Date(),
        cal.getTime(),
        new X500Name("CN=CA Cert"),
        bcPk
);

X509CertificateHolder certHolder = certGen
        .build(new JcaContentSignerBuilder("SHA1withRSA").build(kp.getPrivate()));

BASE64Encoder encoder = new BASE64Encoder();

System.out.println("CA CERT");
System.out.println(X509Factory.BEGIN_CERT);
encoder.encodeBuffer(certHolder.getEncoded(), System.out);
System.out.println(X509Factory.END_CERT);

System.exit(0);

【讨论】:

    猜你喜欢
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 2019-11-02
    • 2020-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    相关资源
    最近更新 更多