在主题中使用属性“ T”和“ uidNumber”创建CSR时出错

时间:2018-09-12 00:14:28

标签: openssl x509

对于集成,我们将在工作中需要向当地政府组织提供证书签名请求文件。生成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文件时,我能够在主题中看到TuidNumber属性:

$ openssl req -in example.csr -noout -text

尽管我通过更新OpenSSL配置文件获得了主题中的属性,但我实际上不确定在定义它们时使用的1.2.3.41.2.3.4.2值的含义(我只是遵循文件中的注释示例)。尽管属性按预期方式存在,但这些值会影响我将要使用的CSR文件吗?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

  

我真的不确定1.2.3.41.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是什么以及如何解释关联的值。