c# - Active Directory 证书服务 - 如何列出 CA 服务器中所有可用的证书模板?
问题描述
我在 Windows 服务器中设置了 CA 服务器。我在 C# 中有一个客户端代码,它创建的 CSR 发送到服务器并从服务器下载颁发的证书。我想知道可以使用C#代码检索CA 服务器中存在的证书模板列表吗?
解决方案
分配给 CA 服务器模板的列表可以通过使用ICertRequest2
COM 接口并调用该ICertRequest2::GetCAProperty
方法来检索。
您必须添加一个CertCli
COM 库引用(在 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)“配置的证书模板”
推荐阅读
- ruby-on-rails - rabbitMQ 和运动鞋的配置问题
- django - 如何使此序列化程序正确显示?
- c# - 如何让 Selenium 仅使用一个驱动程序 selenium 操作两个浏览器窗口(使用 c# 和 chromedriver)?
- apache-nifi - 如何在没有 HDInsight 的情况下使用 NiFi 直接从 ADLS 读取/写入
- javascript - JQuery 季度日期选择器
- python - 使用 stunnel 进行 Django 开发的本地主机 HTTPS
- oracle - 当 SQL Developer 关闭时继续运行 SQL 过程
- mercurial - 如何在 mercurial 中找到命名分支的“根”?
- php - 如何隐藏图像的扩展名?
- python - 在 SGE 集群问题上在 SnakeMake 中使用 Conda 环境