【问题标题】:Powershell script to find currently bound expiring certificates in IIS用于在 IIS 中查找当前绑定的过期证书的 Powershell 脚本
【发布时间】:2013-04-17 09:33:25
【问题描述】:

我正在尝试获取一个工作脚本来检查 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}

【问题讨论】:

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


    【解决方案1】:

    可以从IIS:提供者处获得绑定到网站的证书列表:

    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
    }
    

    【讨论】:

    • 您,先生,是个天才。 $_.Sites.Value 正是我所需要的。我不知道如何引用它。
    猜你喜欢
    • 1970-01-01
    • 2019-06-24
    • 2018-11-07
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2018-11-16
    相关资源
    最近更新 更多