java - 如何在使用 bouncycastle 签名之前添加 ASN.1 扩展?
问题描述
对,所以我完全被难住了。通常,当我签署证书时,我会使用如下所示的 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 扩展
推荐阅读
- xcode - 合并冲突 看不到“?” 在 xcode 中
- swift - 添加 Swift 包时 Xcode 崩溃
- flutter - 如何使用 dart 在 Firestore 查询中更新值
- database - 在 DB2 存储过程中存储 1000 个字符的大字符串
- python-3.x - 无法在 Gunicorn 上部署 dash 应用程序
- ubuntu - 错误:找到了 SUID 沙箱帮助程序二进制文件,但未正确配置
- python - Tensorflow 2 对象检测 API - 如何使用减小的深度乘数训练 MobileNetV2?
- python - 如果不存在则添加文件,否则只需更新日期
- python - Lambert Solver 的传播解导致错误的轨道
- reactjs - GatsbyJS:动态创建帖子和页面