首页 > 解决方案 > 使用创建它的用户身份标记 x509 证书的正确方法?

问题描述

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

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

标签: certificatepki

解决方案


如果您不承诺使用 NT Account 格式,则可以考虑emailAddress证书中的属性subjectName。只需更改Test\Bloggsbloggs@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

显然,两者都对你没有好处。

因此,要务实——要么使用pseudonymWindows 显示它的方式,要么更加务实,劫持 OrgnaizationalUnitName (OU) 属性并使用它。您可以拥有多个 OU,因此无需牺牲您可能拥有的任何当前 OU。Digicert、Microsoft 和 Verisign(毫无疑问,还有其他)使用 OU 作为附加文本字段而不会造成任何损害。它可能不是 100% 符合标准,但它可以工作。

如果您确实走后一条路线并且您正在使用名称限制,请确保在创建您的签名请求时这个额外的 OU 在列表中的第一位。也就是说,它不会破坏名称约束的顺序。


推荐阅读