iis - 用于在 IIS 中查找当前绑定(bind)的过期证书的 Powershell 脚本

标签 iis powershell ssl windows-server-2008-r2

我正在尝试获取一个工作脚本来检查 IIS 中是否有过期的 SSL 证书。有许多类似的条目,只需获取已安装证书的过期列表,但我需要一些额外的逻辑。

我需要知道所有在 x 天内过期的证书 A) 当前绑定(bind)到网站和 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}

最佳答案

可以从 IIS: 提供商处获取绑定(bind)到网站的证书列表:

Get-ChildItem IIS:SSLBindings

试试这个:

$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
}

关于iis - 用于在 IIS 中查找当前绑定(bind)的过期证书的 Powershell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16181725/

相关文章:

.net - 如何在 IIS 中手动配置虚拟目录

asp.net - 生成的shell脚本不输出任何东西

ASP.NET 4.5 MVC 4 无法在 Windows Server 2008 IIS 7 上运行

c# - 如何使用 C# 检测 IIS 版本?

windows - 如何在Windows上配置IBM Kubernetes CLI

powershell - 如何检查 powershell 脚本是否从托管 API 签名?

powershell - 循环期间变量未重置会产生误导性输出

amazon-web-services - 将证书/ key 上传到 AWS 负载均衡器

security - SSL登录结构

c# - ssl webservice中的自定义用户名/密码