对于集成,我们将在工作中需要向当地政府组织提供证书签名请求文件。生成CSR文件时,该本地公司需要在主题中具有以下属性:
CN=data/O=data/OU=data/T=data/C=AU/dnQualifier=data/uidNumber=data/uid=data/serialNumber=data/emailAddress=john@example.com
当我使用以下命令通过OpenSSL生成CSR文件时:
$ openssl req -new -key example.pem -out example.csr -subj "{the above subject}"
我遇到下一个错误:
req: Skipping unknown attribute "T"
req: Skipping unknown attribute "uidNumber"
我在Debian 9.5和Ubuntu 18.04上尝试了相同的结果。
调查之后,我在/etc/ssl/openssl.cfg
文件中添加了新的OID:
[ new_oids ]
uidNumber = 1.2.3.4
T = 1.2.3.4.2
最后生成的没有问题。
通过以下方式验证CSR文件时,我能够在主题中看到T
和uidNumber
属性:
$ openssl req -in example.csr -noout -text
尽管我通过更新OpenSSL配置文件获得了主题中的属性,但我实际上不确定在定义它们时使用的1.2.3.4
和1.2.3.4.2
值的含义(我只是遵循文件中的注释示例)。尽管属性按预期方式存在,但这些值会影响我将要使用的CSR文件吗?
非常感谢您的帮助。
答案 0 :(得分:2)
我真的不确定
1.2.3.4
和1.2.3.4.2
值的含义 定义它们时使用
通常,这些OID具有所有参与方都可以理解的含义。通常,它们的值和含义会在某个已知位置发布。查找它们的便捷站点是this OID repository。您选择的OID没有已知的含义。
这些值是否会影响我要使用的CSR文件,尽管 属性是否按预期显示?
是的,OID将是PEM或DER编码的CSR的一部分,并且被接收者用来解析文件。实际上,仅包含 OID,而不包含属性本身的名称。通过选择OID,接收器将无法理解相关值的含义。因此,您应确保选择与属性的预期含义匹配的OID值。
T
属性可能指向title
with OID 2.5.4.12
,可以使用简称T
。该短名称似乎尚未标准化,但请参见ITU X.520 spec部分6.4.3 title
,其中以T = "Manager, Distributed Applications"
为例。
uidNumber
属性可能引用了OID 1.3.6.1.1.1.1.0
。
但是,最好不要要求添加OID,最好是为所有属性添加OID,而不是猜测您正在使用的规范的编写者的意图。这样,所有各方都确切知道期望的属性OID是什么以及如何解释关联的值。