通过命令行将自定义字段添加到 opensssl X509 证书中的主题行

通过命令行将自定义字段添加到 opensssl X509 证书中的主题行

我正在尝试为证书生成 CSR,并希望包含唯一 ID 作为证书主题行的一部分。在证书经过验证(通过正常的 TLS 验证方法)并建立连接后,TLS 客户端应出于某种目的使用此信息。

我正在使用脚本自动生成 CSR,并且无法选择修改系统中存在的 openssl 配置文件。我知道有一个选项可以为此目的生成临时 ssl 配置,我可以在其中指定其他属性和值。但为了简单起见,我试图避免它,直到我绝对必须使用它。

我正在尝试以下命令,但收到如下警告消息:

$ openssl req -key abc.pem -new -out abc.csr -subj "/CN=myhostname.mydomain.com/uuid=a1b2c3d4e5f6"
req: Skipping unknown attribute "uuid"

有没有办法通过命令行传递UUID?如果没有,唯一的选择是使用临时配置文件吗?

答案1

OpenSSL 不知道这uuid意味着什么,因此无法将其添加到请求中。

您可以在openssl.cnf文件中定义新属性并将其用于该类型的所有请求。

openssl.cnf文件应该(并且可能已经)有一行以oid_section =.这指向您可以定义新属性的部分。

oid_section = new_oids
.
.
[ new_oids ]
uuid = 1.3.6.1.4.1.32473.123

后面的数字uuid是对象标识符 (OID)。 OID 是分配给该属性的全局唯一ID 号。它们是为公共属性(例如 CommonName 和 Organization)定义的,但如果您使用自定义属性,则需要在此处定义它们,以便 OpenSSL 理解。

上面的示例使用为示例文档预定义的企业 OID 弧 (1.3.6.1.4.1.32473),并附加了新节点 123。您不应该使用 example arc,就像您不应该使用 example.com 或 example.org 作为文档之外的域名一样。

你可以注册新的企业号码免费并创建您自己的 OID 集。添加到顶级注册 OID 的任何节点都将是唯一的并在您的控制之下。

相关内容