使用创建它的用户身份标记 x509 证书的正确方法?
Correct way to tag x509 certificate with identity of user that created it?
我有一个 Windows 服务来处理证书签名请求以制作证书。它还根据 Windows 用户的要求制作自签名证书(证书颁发机构)。无论哪种情况,我都想将发出证书制作请求的用户的用户帐户名(NT 帐户字符串,如 'domain\user')放入完成的证书中,以便可以直接跟踪谁创建了什么。
在证书中粘贴用户帐户字符串的最佳位置在哪里?首先想到的是自定义扩展。这最有意义吗?或者也许是该主题的另一个领域?我不知道这是否是一种普遍做法。
如果您不打算使用 NT 帐户格式,您可以考虑证书 subjectName
中的 emailAddress
属性。只需将 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 位于列表的第一位。也就是说,它不会破坏名称约束的顺序。
我有一个 Windows 服务来处理证书签名请求以制作证书。它还根据 Windows 用户的要求制作自签名证书(证书颁发机构)。无论哪种情况,我都想将发出证书制作请求的用户的用户帐户名(NT 帐户字符串,如 'domain\user')放入完成的证书中,以便可以直接跟踪谁创建了什么。
在证书中粘贴用户帐户字符串的最佳位置在哪里?首先想到的是自定义扩展。这最有意义吗?或者也许是该主题的另一个领域?我不知道这是否是一种普遍做法。
如果您不打算使用 NT 帐户格式,您可以考虑证书 subjectName
中的 emailAddress
属性。只需将 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 位于列表的第一位。也就是说,它不会破坏名称约束的顺序。