是否可以创建具有自定义扩展名的X509v3证书,以便在证书中有一些自定义字段和值,例如“客户端属性= User_A,iPhone,iOS 7”?
我目前正在使用BouncyCastle,但我不确定如何添加我想要的扩展程序。我仍然坚持创建certificatebuilder的第一步,如下所示:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(4096);
KeyPair key = keyGen.generateKeyPair();
PublicKey pub = key.getPublic();
PrivateKey priv = key.getPrivate();
X509v3CertificateBuilder v3Bldr = new JcaX509v3CertificateBuilder(issuerBuilder.build(), BigInteger.valueOf(3),
new Date(System.currentTimeMillis() - 1000L * 60 * 60 * 24 * 30), new Date(System.currentTimeMillis() + (1000L * 60 * 60 * 24 * 30)),
subjectBuilder.build(), pub);
ASN1ObjectIdentifier asn1iod =
new ASN1ObjectIdentifier("1.2.3.4");
v3Bldr.addExtension(asn1iod,false,b);
X509CertificateHolder certHldr = v3Bldr.build(new JcaContentSignerBuilder("SHA1WithRSA").setProvider("BC").build(priv));
X509Certificate cert = new JcaX509CertificateConverter().setProvider("BC").getCertificate(certHldr);;
。接下来我该怎么做以及如何添加自定义扩展程序?
编辑:我试图按照here中的示例进行操作,但它在线程“main”中给出了错误异常java.lang.NoClassDefFoundError:org / bouncycastle / util / Encodable答案 0 :(得分:0)
org / bouncycastle / util / Encodable类出现在bouncycastle 1.52版本中(目前最后一个版本是1.56)。 所以你可能正在使用之前版本的bouncycastle。 好吧,假设你的类路径中已经有了bcprov jar。