没错,所以我完全被难住了。通常,当我签署证书时,我会使用下面这样的ASN.1来指定特定的规则,例如,可以用于IoT。
1.2.3.4=ASN1:SEQUENCE:seq_sect
[seq_sect]
one=SEQUENCE:do_one
two=SEQUENCE:do_two
[do_one]
field.1 = UTF8:field1/*
field.2 = UTF8:field2/*
[do_two]
field.1 = UTF8:field1/*
field.2 = UTF8:field2/*
我通常使用一个名为xca的程序,但在这种情况下,我一直在使用bouncycastle进行编码,并一直在努力将其导入X509v3CertificateBuilder。我知道我应该使用.addExtension,但我不太确定是应该将规则存储在.txt文件中,还是应该将其存储在数组中并以某种方式解析它?
实际上您使用的是xca包装的OpenSSL。只有OpenSSL对ASN.1使用这种特定的基于文本的"配置"格式。对于BouncyCastle,你必须编写代码,比如(未测试(:
ASN1EncodableVector one = new ASN1EncodableVector();
one.add(new DERUTF8String("field1/*"));
one.add(new DERUTF8String("field2/*"));
// if two is really identical to one, just reuse it; otherwise do something different
ASN1EncodableVector outer = new ASN1EncodableVector();
outer.add(new DERSequence(one));
outer.add(new DERSequence(two)); // or one again
builder.addExtension (oid, critical, new DERSequence(outer));
类似如何在java中使用bouncycastle将PrivateKeyUsage扩展添加到证书?以及使用Bouncy Castle 在Java中创建自定义X509 v3扩展