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

Certificate 用创建x509证书的用户的身份标记该证书的正确方法?,certificate,pki,Certificate,Pki,我有一个Windows服务,它处理证书签名请求以生成证书。它还根据Windows用户的请求生成自签名证书(证书颁发机构)。在任何一种情况下,我都希望将请求生成证书的用户的用户帐户名(NT帐户字符串,如'domain\user')放在完成的证书中,这样就可以直接跟踪谁创建了什么 在证书中粘贴用户帐户字符串的最佳位置是哪里?首先想到的是自定义扩展。这最有意义吗?或者是这个主题的另一个领域?我不知道这是否是一种常见的做法。 < P>如果您不承诺使用NT帐户格式,您可以考虑证书主题名称< /代码>中的电

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


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

< P>如果您不承诺使用NT帐户格式,您可以考虑证书<代码>主题名称< /代码>中的<代码>电子邮件地址> /代码>属性。只需将
Test\Bloggs
更改为
bloggs@test

还可以使用
假名
属性。但是,尽管OpenSSL正确显示了该属性的名称,但Windows将其显示为
2.5.4.65
,这可能不是您想要的

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

        X509v3 Subject Alternative Name:
            DNS:test.example.org, othername:<unsupported>
显然,这两种方法对你都没有好处

因此,要务实——要么使用
笔名
,按照Windows的显示方式生活,要么更加务实,劫持OrganizationalUnitName(OU)属性并使用它。您可以有多个OU,因此不需要牺牲您当前的OU。Digicert、Microsoft和Verisign(毫无疑问,还有其他公司)将OU用作额外的文本字段,不会造成任何伤害。它可能不是100%符合标准,但它可以工作


如果使用后一种方法,并且使用名称约束,请确保在创建签名请求时,此附加OU位于列表的第一位。也就是说,它不会破坏名称约束的顺序。

< P>如果您不承诺使用NT帐户格式,则可以考虑证书<代码>主题名称< /代码>中的<代码>电子邮件地址> /代码>属性。只需将
Test\Bloggs
更改为
bloggs@test

还可以使用
假名
属性。但是,尽管OpenSSL正确显示了该属性的名称,但Windows将其显示为
2.5.4.65
,这可能不是您想要的

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

        X509v3 Subject Alternative Name:
            DNS:test.example.org, othername:<unsupported>
显然,这两种方法对你都没有好处

因此,要务实——要么使用
笔名
,按照Windows的显示方式生活,要么更加务实,劫持OrganizationalUnitName(OU)属性并使用它。您可以有多个OU,因此不需要牺牲您当前的OU。Digicert、Microsoft和Verisign(毫无疑问,还有其他公司)将OU用作额外的文本字段,不会造成任何伤害。它可能不是100%符合标准,但它可以工作

如果使用后一种方法,并且使用名称约束,请确保在创建签名请求时,此附加OU位于列表的第一位。也就是说,它不会打破名称约束的顺序