我需要使用 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/