我需要使用Bouncy Castle创建一个X509证书作为CA证书。 证书将手动添加到受信任的Web浏览器列表中。它将用于签署服务器证书。
我该怎么做? 除了通常的证书属性之外,还有一些必须包含的附加内容(关键属性说这是CA,......)。
它应该至少在最重要的浏览器中起作用(当然只能在那些允许配置根CA的浏览器中)。
答案 0 :(得分: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);