在 OpenSSL 命令行工具中为自定义扩展创建自己的 ASN.1 模块

Create own ASN.1 module for custom extension in OpenSSL command line tools

我正在尝试使用 OpenSSL 命令行工具构建 PKI。最终实体证书需要有一个带有自定义 OID 的自定义扩展,它将保存一些额外的信息。到目前为止,我能够在证书中使用我自己的 OID 获得自定义扩展,我面临的唯一问题是,这只会添加一个字段。正如我们在基本约束等标准扩展中看到的那样,我需要一个完整的 ASN.1 模块。有没有办法使用 OpenSSL 命令行工具和配置文件来做到这一点?

以下文档显示可以指定自己的 ASN.1 模块,但我找不到将其放入 CSR 并从那里放入证书的方法。 https://www.openssl.org/docs/man1.0.2/man3/ASN1_generate_v3.html

找到了。在用于创建证书或 CSR 的配置中,可以使用上面链接的手册页中提供的信息。 ASN.1 模块的描述如前所述,可以通过从 ASN1:Type:NextSection 开始告诉 OpenSSL 根据此描述编写扩展。在描述 ASN.1 模块的每个级别的部分中,不再需要关键字 ASN1。

...

[ usr_ext ]
# Extensions for client certificates (`man x509v3_config`).
keyUsage = digitalSignature
1.2.3.4.5.6.7.8.9 = ASN1:SEQUENCE:CustomExt
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid,issuer

[CustomExt]
wrappingSeq = SEQUENCE:ExtOid
key = FORMAT:HEX,BITSTRING:abcdef1234556789

[ExtOid]
oid = OID:1.3.101.110

最终编码如下

SEQUENCE
    OBJECT IDENTIFIER 1.2.3.4.5.6.7.8.9
    OCTET STRING
        SEQUENCE
            OBJECT IDENTIFIER 1.3.101.110
        BITSTRING 0xabcdef1234556789