正确的方法来标记x509证书与创建它的用户的身份?

时间:2018-05-30 19:51:55

标签: certificate pki

我有一个处理证书签名请求的Windows服务来制作证书。它还根据Windows用户的请求生成自签名证书(证书颁发机构)。在任何一种情况下,我都希望将用户帐户名称(NT帐户字符串,如“domain \ user”)放在请求的用户中,以便在完成的证书中生成证书,以便直接跟踪谁创建了什么。

在证书中粘贴用户帐户字符串的最佳位置在哪里?首先想到的是自定义扩展。这最有意义吗?或者也许是主题中的另一个领域?我不知道这是否是一种常见做法。

1 个答案:

答案 0 :(得分:1)

如果您未承诺使用NT帐户格式,则可以考虑证书emailAddress中的subjectName属性。只需将Test\Bloggs更改为bloggs@test

还可以使用pseudonym属性。但是,当OpenSSL正确显示此属性的名称时,Windows会将其显示为2.5.4.65,这可能不是您想要的。

理论上,subjectAltName扩展也可以用来存储它。可以使用otherName字段。但是,OpenSSL显示证书如下:

        X509v3 Subject Alternative Name:
            DNS:test.example.org, othername:<unsupported>

Windows显示:

DNS Name=test.example.org
Other Name:
     1.3.6.1.4.1.1=0c 0b 54 45 53 54 5c 42 6c 6f 67 67 73

显然,对你没有任何好处。

因此,务实 - 使用pseudonym并以Windows显示的方式生活,或者更加务实并劫持OrgnaizationalUnitName(OU)属性并使用它。您可以拥有多个OU,因此不需要牺牲您可能拥有的任何当前OU。 Digicert,Microsoft和Verisign(毫无疑问,其他人)使用OU作为附加文本字段而没有任何伤害。它可能不是100%标准兼容,但它可以工作。

如果您确实沿着后一条路线前进并且您正在使用名称约束,请确保在创建签名请求时,此附加OU是列表中的第一个。也就是说,它不会破坏名称约束的顺序。