Java 创建带有自定义扩展名的X509V3证书

Java 创建带有自定义扩展名的X509V3证书,java,x509certificate,bouncycastle,Java,X509certificate,Bouncycastle,是否可以创建具有自定义扩展名的X509v3证书,以便证书中有一些自定义字段和值,例如“客户端属性=用户\ a、iPhone、iOS 7” 我目前正在使用BouncyCastle,但我不确定如何添加所需的扩展。我仍然停留在创建certificatebuilder的第一步,如下所示: KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA"); keyGen.initialize(4096); KeyPair key =

是否可以创建具有自定义扩展名的X509v3证书,以便证书中有一些自定义字段和值,例如“客户端属性=用户\ 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);;
。接下来我应该做什么以及如何添加自定义扩展


编辑:我尝试在中遵循该示例,但它在线程“main”java.lang.NoClassDefFoundError:org/bouncycastle/util/Encodable中给了我错误异常。org/bouncycastle/util/Encodable类出现在bouncycastle版本1.52中(当前最新版本为1.56)。 因此,您可能正在使用以前版本的bouncycastle。
好吧,假设您的类路径中已经有bcprov jar。

可能重复@pedrofb检查更新,我忘了提到它。不确定问题出在哪里TBH确保您使用的是最新版本的bcprov和bcpkix JAR。