我正在使用 C#(或 VBScript)从企业 CA 颁发证书。
根据这个答案,我需要指定 OID 而不是证书名称,并将其放在代码的意外部分。(恕我直言,我应该将其放在空字符串所在的位置)
我正在查看证书管理器、模板等,但找不到我应该使用的 OID。有什么建议吗?
答案1
证书模板存储在 Active Directory 的配置分区中。
例如,如果您的证书模板名为“智能卡”,那么它的 DN 将是:
CN=Smartcard,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=Contoso,DC=Com
该对象的属性msPKI-Cert-Template-OID
包含您所寻找的 OID。
编辑:这是一些 Powershell:
PS C:\Users\Ryan> Get-ADObject 'CN=Smartcard,CN=Certificate Templates,CN=Public Key Services,CN=Services,CN=Configuration,DC=Contoso,DC=Com' -Properties msPKI-Cert-Template-OID
DistinguishedName : CN=Smartcard,CN=Certificate Templates,CN=Public Key
Services,CN=Services,CN=Configuration,DC=Contoso,DC=Com
msPKI-Cert-Template-OID : 1.3.6.1.4.1.311.21.8.13882702.11110958.1330334.1890290.2281445.541.2.14
Name : Smartcard
ObjectClass : pKICertificateTemplate
ObjectGUID : 1cd4698d-56fe-4d4b-8005-f89a76d24ae1
答案2
我在查找证书模板的专有名称时遇到了麻烦,因此我按照以下步骤找到了与其他答案不同的方法:
- 打开 MMC 并添加证书模板管理单元(文件 > 添加/删除管理单元 > 证书模板 - 您可能需要以管理员身份运行才能使用此管理单元)
- 右键单击您想要 OID 的证书模板
- 打开属性
- 打开扩展选项卡
- 选择证书模板信息
- OID 将显示在下面描述中的“对象标识符”后面
答案3
我认为您可能需要这个完整的字符串作为您的域 OID。
Get-ADObject ('CN=OID,CN=Public Key Services,CN=Services,'+(Get-ADRootDSE).configurationNamingContext) -Properties msPKI-Cert-Template-OID | Select-Object -ExpandProperty msPKI-Cert-Template-OID