【发布时间】:2019-01-11 14:00:14
【问题描述】:
我在 windows 服务器中设置了 CA 服务器。我在 C# 中有一个客户端代码,它创建的 CSR 发送到服务器并从服务器下载颁发的证书。我想知道是否可以使用 C# 代码检索 CA 服务器中的 证书模板列表?
【问题讨论】:
标签: c# asp.net certificate x509certificate ca
我在 windows 服务器中设置了 CA 服务器。我在 C# 中有一个客户端代码,它创建的 CSR 发送到服务器并从服务器下载颁发的证书。我想知道是否可以使用 C# 代码检索 CA 服务器中的 证书模板列表?
【问题讨论】:
标签: c# asp.net certificate x509certificate ca
使用ICertRequest2 COM 接口并调用ICertRequest2::GetCAProperty 方法可以检索分配给CA 服务器模板的列表。
您必须添加一个CertCli COM 库引用(在 Visual Studio 中)。或者,您可以使用certcli.dll 库中的tlbimp.exe 工具创建introp 库,然后使用实现ICertRequest 接口的CCertRequest 类。
为了检索证书模板列表,请在dwPropId 参数中传递CR_PROP_TEMPLATES 值。有关GetCAProperty 方法调用的更多详细信息,您可以咨询ICertRequestD2::GetCAProperty DCOM 描述,它是MS-WCCE 协议规范的一部分。
该方法返回以下格式的字符串值:TemplateName1\nTemplateOID1\nTemplateName2\nTemplateOID2\...。您可以将此字符串与\n 字符拆分为字符串数组,其中每个偶数(假设从零开始的索引)元素表示模板显示名称(不是通用名称,或cn 属性),奇数元素表示模板OID。更多关于输出的细节:[MS-WCCE] §3.2.2.6.3.1.1 PropID=0x0000001D (CR_PROP_TEMPLATES) "Configured Certificate Templates"
【讨论】: