我正在尝试获取一个工作脚本来检查 IIS 中过期的 SSL 证书。有许多类似的条目只需获取过期已安装证书的列表,但我需要一些额外的逻辑。
我需要知道在 x 天内到期的所有证书,即 A)当前绑定到网站和 B)该网站必须处于“已启动”状态
我收集了某些信息(如下),但我无法将它们关联起来,所以它们只给我我需要的过期证书。为了增加复杂性,我不能简单地在证书主题中查找 CN 中的站点名称,因为安装了数百个证书,并且同一站点的 1 个或多个旧证书仍然存在的情况并不少见被安装。话虽如此,他们有相同的主题。我需要比较指纹,但通过简单地指定站点名称来获取指纹被证明是困难的。
收集各种相关细节的一些代码如下:
ActiveSites = get-website | where {$_.State -eq "Started"}
$DaysToExpiration = 7
$InstalledCerts = gci cert:\localmachine\my
$ExpiringCerts = $InstalledCerts | Where {(($_.NotAfter - (Get-Date)).Days) -lt $DaysToExpiration}