PowerShell: Проверка сертификатов IIS возвращает хорошие сертификаты с истекшим сроком действия?

#powershell #ssl-certificate #iis-6

Вопрос:

Когда мы запускаем это из Планировщика задач на серверах Windows 2012R2, мы получаем отчет о просроченных ssl-сертификатах…

 $serverListpath = (Get-adcomputer -SearchBase "OU=container,DC=root,DC=com" -SearchScope Subtree -filter {name -like "*context*"} -Properties Name|select Name|where-object {$_.name -notLike "FLD*"})
#$serverlist = Get-Content -Force $serverlistpath
#$serverlist = Get-Content ".servers.txt"
$serverlist = $serverListpath.Name

foreach($server in $serverlist){
    if($server -like '#*')
    {
        continue
    }

$threshold = 45   #Number of days to look for expiring certificates
$deadline = (Get-Date).AddDays($threshold)   #Set deadline date
Invoke-Command $server { Dir Cert:LocalMachineMy } | foreach {
If ($_.NotAfter -le $deadline) { $_ | Select Issuer, Subject, NotAfter, @{Label="Expires In (Days)";Expression={($_.NotAfter - (Get-Date)).Days}} }
}|select -expandproperty Subject|out-file .output$day-ExpiringIISSSLCerts.txt -Encoding ascii -Append
}
#All Admin Servers
# Start mail send
$log = "d:batchoutput$day-ExpiringIISSSLCerts.txt"
    if(Test-Path -Path $log){

$smtpServer = "smtpserver"
$messageSubject = "Cert Check Report - "   $env:computername 
$message = New-Object System.Net.Mail.MailMessage
$message.From = "authorizedemailaddress"
$message.To.Add("myemail")
$message.Subject = $messageSubject 
$message.IsBodyHTML = $true 
$message.Body = "<head><pre>$style</pre></head>" 
$message.Body  = "Cert Check Report - "   $env:computername
$message.Body  = Get-Date
$message.Body  = "<br><b>Expiring SSL Certificates Check from "   $env:computername   "</b>"
$message.Attachments.Add($log)
$smtp = New-Object Net.Mail.SmtpClient($smtpServer) 
$smtp.Send($message)
}
$result = Get-content $log
write-host $result
 

Чего я не понимаю, так это почему это возвращает сертификаты, срок действия которых иногда НЕ истек

Комментарии:

1. Вы проверяете срок годности на 45 дней в будущем. Таким образом, все, у кого осталось от 1 до 45 дней до истечения срока действия, будет возвращено.

2. Если бы вы хотели знать те, срок действия которых уже истек, я думаю, вы бы хотели проверить наличие Expires In (Days) отрицательного значения или 0 .

3. !0/2022 уже далеко за 45 дней, и все же…