makerofthings7 Asked: 2014-12-05 05:38:47 +0800 CST2014-12-05 05:38:47 +0800 CST 2014-12-05 05:38:47 +0800 CST “企业 PKI”MMC 是否允许对 PKI 进行任何自动化测试? 772 我正在使用 Enterprise PKI 管理单元来诊断和检查 MSFT PKI 系统的运行状况。 有没有办法编写/自动化这个工具来提醒我 CRL 即将到期或缺少 AIA? monitoring 2 个回答 Voted Best Answer Crypt32 2014-12-05T06:32:30+08:002014-12-05T06:32:30+08:00 不,PKIView.msc 不提供任何自动化手段/功能。您必须编写自己的脚本。我的建议(抱歉,没有实际代码,但有一种方法)是考虑以下计划和可能的工具(假设您将使用 Windows PowerShell): 枚举所有企业证书颁发机构(通过使用ICertConfig接口) 遍历每个 CA 并检索最新的 CA 交换证书(ICertAdmin ::GetCAProperty与参数)CR_PROP_CAXCHGCERTPropId 使用X509Chanin.Build()方法为每个 CA Exchange 证书构建链。这将为您提供所有要检查的证书。 遍历每个证书并使用CryptGetObjectUrl函数从 CDP 和 AIA 扩展中提取 URL。 使用Invoke-WebRequest cmdlet 尝试从上一步中收集的 URL 下载对象。 报告任何失败的下载。如果下载成功,您可以设置阈值以警告项目即将过期或已过期。 有很多方法,但我会选择这个(我计划在明年做这个,所以这是可能的)。 最后一个建议:如果您正在寻找可靠的解决方案,请不要依赖 certutil 输出解析,因为它的输出取决于许多因素,可能不是您期望的。 此外,如果您将使用PowerShell PKI 模块,此任务将得到简化。该模块已经提供了枚举企业 CA、以托管方式读取 CRL、检索 CA Exchange 证书等的方法。 26.12.2014 更新:脚本的 PoC 现在可用:企业 PKI (pkiview.msc) PowerShell 版 (PoC) Clayton 2014-12-05T06:20:48+08:002014-12-05T06:20:48+08:00 当某些事情出错时,MMC 会显示红色/黄色图标,但它是一个交互式控制台,没有自动化功能。我使用 powershell 调用 CERTUTIL CLI 命令来检查过期,并使用 invoke-webrequest 来测试 AIA 的可用性。 gci \\servername\certenroll\*.crl | foreach { certutil -dump $_.fullname | out-string | % { $_ -match "Next CRL Publish\r\n\s+(.*)" | out-null } $expire = [datetime]$matches[1] $expire # do some date math on $expire # send some email if about to expire } $aia = "http://pki.acme.com/acme.crt" if ( (invoke-webrequest $aia).statuscode -ne 200) { # not found, send-mailmessage }
不,PKIView.msc 不提供任何自动化手段/功能。您必须编写自己的脚本。我的建议(抱歉,没有实际代码,但有一种方法)是考虑以下计划和可能的工具(假设您将使用 Windows PowerShell):
CR_PROP_CAXCHGCERT
PropId
有很多方法,但我会选择这个(我计划在明年做这个,所以这是可能的)。
最后一个建议:如果您正在寻找可靠的解决方案,请不要依赖 certutil 输出解析,因为它的输出取决于许多因素,可能不是您期望的。
此外,如果您将使用PowerShell PKI 模块,此任务将得到简化。该模块已经提供了枚举企业 CA、以托管方式读取 CRL、检索 CA Exchange 证书等的方法。
26.12.2014 更新:脚本的 PoC 现在可用:企业 PKI (pkiview.msc) PowerShell 版 (PoC)
当某些事情出错时,MMC 会显示红色/黄色图标,但它是一个交互式控制台,没有自动化功能。我使用 powershell 调用 CERTUTIL CLI 命令来检查过期,并使用 invoke-webrequest 来测试 AIA 的可用性。