Jus*_*ott 5 iis powershell ssl windows-server-2008-r2
我正在尝试获取一个工作脚本来检查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}
Run Code Online (Sandbox Code Playgroud)
可以从IIS:
提供商处获取绑定到网站的证书列表:
Get-ChildItem IIS:SSLBindings
Run Code Online (Sandbox Code Playgroud)
试试这个:
$DaysToExpiration = 7
$expirationDate = (Get-Date).AddDays($DaysToExpiration)
$sites = Get-Website | ? { $_.State -eq "Started" } | % { $_.Name }
$certs = Get-ChildItem IIS:SSLBindings | ? {
$sites -contains $_.Sites.Value
} | % { $_.Thumbprint }
Get-ChildItem CERT:LocalMachine/My | ? {
$certs -contains $_.Thumbprint -and $_.NotAfter -lt $expirationDate
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13804 次 |
最近记录: |