首页 > 解决方案 > Active Directory 证书服务 - 如何列出 CA 服务器中所有可用的证书模板?

问题描述

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

标签: c#asp.netcertificatex509certificateca

解决方案


分配给 CA 服务器模板的列表可以通过使用ICertRequest2COM 接口并调用该ICertRequest2::GetCAProperty方法来检索。

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

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

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


推荐阅读