我们正在使用 Microsoft 证书请求 (CertReq.exe) 以编程方式构建证书请求。为此,我们必须创建输入 INF 文件,请参阅此处的文档。
Subject 属性定义为Relative Distinguished Name string values
,应按照RFC 1779的规定进行编码。
这实质上意味着通过添加前缀来简单地转义某些字符( "
, +
, ,
, ;
, <
, >
, or ) 。\
\
问题是,我无法弄清楚如何正确编码具有“O = Foo + Bar”属性的主题。
输入(相关INF部分):
[NewRequest]
Subject = "CN=www.foo.de,OU=Foobar,O=Foo \+ Bar,L=Foo,S=Bar,C=DE"
输出:
The string contains an invalid X500 name attribute key, oid, value or delimiter. 0x80092023 (-2146885597 CRYPT_E_INVALID_X500_STRING)
c:\file_path.inf([NewRequest] Subject = "CN=www.foo.de,OU=Foobar,O=Foo \+ Bar,L=Foo,S=Bar,C=DE")
RFC 1799 不鼓励重复转义(使用"
and \
),但似乎可以解决 LDAP 查询中的问题(参见此处,fi)。但是,我们也尝试过不使用引用来指定主题,但得到了另一个不需要的结果。
输入:
[NewRequest]
Subject = CN=www.foo.de,OU=Foobar,O=Foo \+ Bar,L=Foo,S=Bar,C=DE
输出:
The data is invalid. 0x8007000d (WIN32: 13 ERROR_INVALID_DATA)
c:\file_path.inf([NewRequest] Subject = "CN=www.foo.de", "OU=Foobar", "O=Foo \+ Bar", "L=Foo", "S=Bar", "C=DE")
整个过程在没有+
标志的情况下工作。在 INF 文件中编码 RDN(相对专有名称)的正确方法是什么?