我在windows服务器中设置了CA服务器。我在C#中有一个创建CSR的客户端代码,它发送到服务器并从服务器下载颁发的证书。我想知道是否可以使用C#代码检索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协议规范的一部分。
该方法返回以下格式的字符串值:TemplateName1nTemplateOID1nTemplateName2nTemplateOID2...
。您可以将这个具有n
字符的字符串拆分为一个字符串数组,其中每个偶数(假设索引为零)元素表示模板显示名称(不是通用名称或cn
属性),奇数元素表示模板OID。有关输出的更多详细信息:[MS-WCCE]§3.2.2.6.3.1.1 PropID=0x0000001D(CR_PROP_TEMPLATES)"配置的证书模板">