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



我有一个处理证书签名请求以制作证书的Windows服务。它还根据 Windows 用户的请求制作自签名证书(证书颁发机构(。无论哪种情况,我都想将请求制作证书的用户的用户帐户名称(NT 帐户字符串,如"域\用户"(放入完成的证书中,以便直接跟踪谁创建了什么。

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

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

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

理论上,subjectAltName扩展也可用于存储此内容。 有一个可以使用的otherName字段。 但是,OpenSSL 显示的证书如下所示:

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

当窗口显示时:

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 位于列表中的第一个。 也就是说,它不会破坏名称约束的顺序。

最新更新