Active Directory 证书服务 - 如何列出 CA 服务器中所有可用的证书模板?

Active Directory Certificate Service - How to list all the available certificate templates in the CA Server?

我在 windows 服务器中设置了 CA 服务器。我在 C# 中有一个客户端代码,它创建 CSR 发送到服务器并从服务器下载颁发的证书。我想知道可以使用 C# 代码检索 CA 服务器中的 证书模板列表 吗?

分配给 CA 服务器模板的列表可以使用 ICertRequest2 COM interface and calling the ICertRequest2::GetCAProperty 方法检索。

您必须添加 CertCli COM 库引用(在 Visual Studio 中)。或者,您可以使用 certcli.dll 库中的 tlbimp.exe 工具创建 intro 库,然后使用实现 ICertRequest 接口的 CCertRequest class。

为了检索证书模板列表,请在 dwPropId 参数中传递 CR_PROP_TEMPLATES 值。有关 GetCAProperty 方法调用的更多详细信息,您可以参考 ICertRequestD2::GetCAProperty DCOM 描述,它是 MS-WCCE 协议规范的一部分。

方法 returns 字符串值格式如下:TemplateName1\nTemplateOID1\nTemplateName2\nTemplateOID2\...。您可以将这个带有 \n 字符的字符串拆分为一个字符串数组,其中每个偶数(假设从零开始的索引)元素代表模板显示名称(不是通用名称,或 cn 属性),奇数元素代表模板 OID。有关输出的更多详细信息:[MS-WCCE] §3.2.2.6.3.1.1 PropID=0x0000001D (CR_PROP_TEMPLATES) "Configured Certificate Templates"