“企业 PKI”MMC 是否允许对 PKI 进行任何自动化测试?

Chr*_*ski 5 monitoring pki certificate-authority ad-certificate-services

我正在使用企业 PKI 管理单元来诊断和检查 MSFT PKI 系统的运行状况。

有什么方法可以编写/自动化此工具以提醒我 CRL 即将到期或缺少 AIA?

Cry*_*t32 4

不,PKIView.msc 不提供任何自动化手段/功能。您必须编写自己的脚本。我建议(抱歉,没有实际代码,但有一种方法可以做到这一点)是考虑以下计划和可能的工具(假设您将使用 Windows PowerShell):

  • 枚举所有企业证书颁发机构(通过使用ICertConfig接口)
  • 循环每个 CA 并检索最新的 CA Exchange 证书(参数中包含ICertAdmin::GetCAPropertyCR_PROP_CAXCHGCERTPropId
  • 使用X509Chanin.Build()方法为每个 CA Exchange 证书构建链。这将为您提供所有要检查的证书。
  • 循环每个证书并使用CryptGetObjectUrl函数从 CDP 和 AIA 扩展中提取 URL。
  • 使用Invoke-WebRequest cmdlet 尝试从上一步中收集的 URL 下载对象。
  • 报告任何失败的下载。如果下载成功,您可以设置阈值以警告即将过期或已过期的项目。

有很多方法,但我会选择这个(我计划在明年研究这个,所以这是可能的)。

最后一个建议:如果您正在寻找可靠的解决方案,请不要依赖 certutil 输出解析,因为它的输出取决于许多因素,并且可能不是您期望的。

此外,如果您使用PowerShell PKI 模块,此任务将会简化。该模块已经提供了枚举企业 CA、以托管方式读取 CRL、检索 CA Exchange 证书等的方法。

2014 年 12 月 26 日更新:该脚本的 PoC 现已可用:Enterprise PKI (pkiview.msc) PowerShell Edition (PoC)