java - 如何使用 Bouncy CaSTLe 创建 CA 根证书?

标签 java https bouncycastle x509 ca

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

我该怎么做? 除了通常的证书属性外,还必须包含一些其他内容(关键属性表示这是 CA,...)。

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

最佳答案

我这样做了:

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);

关于java - 如何使用 Bouncy CaSTLe 创建 CA 根证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31618568/

相关文章:

java - java中的基本队列

java - 关于 Java 指针和更改 JSF 应用程序中的语言环境的基本知识

c# - 在 C# 和 Bouncy CaSTLe 中读取 RSA PrivateKey

java - 推土机 : String-To-Date Field Level Mapping for a List

regex - 有没有办法只使用 3x 来解决几个 CloudFlare 'Page Rules'?

django - 如何使我的 azure django 项目成为 https?

apache - 配置安全的 SSL Apache 反向代理

java - 使用 Bouncy CaSTLe 获取 RSA 公钥剩余部分

pdf-generation - iText/BouncyCaSTLe 抛出 "java.lang.VerifyError: class overrides final method equals"

java - 我如何将 Java 控制台输出读入字符串缓冲区