对于我们将要在工作中进行的集成,我们需要向当地政府组织提供证书签名请求文件。生成CSR文件时,本地公司需要在主题中具有以下属性:
CN=data/O=data/OU=data/T=data/C=AU/dnQualifier=data/uidNumber=data/uid=data/serialNumber=data/[email protected]
当我使用以下命令使用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文件,尽管属性按预期存在?
我非常感谢你的帮助。
我真的不确定我在定义时使用的
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是什么以及如何解释相关的值。