すべてのドメインサーバーで今後30日以内に有効期限が切れる証明書を見つける 便利なPowerShellスクリプト情報がありましたので、共有します。
証明書関連はトラブルになることが多いので知っていると便利です。
質問の抜粋です。
こんにちは!SSL証明書の有効期限が切れたときに表示する方法を理解しようとしています。現在、次のコード (同僚から提供されたもの) があり、証明書の有効期限を表示する方法を知りたいです。可能であれば、特定の時間枠で有効期限が切れる証明書を表示する方法があるかどうかも知りたいです (つまり、6 月 1 日から 7 月 1 日の間に有効期限が切れる SSL 証明書を表示するか、6 月 25 日にのみ有効期限が切れる証明書を表示します)。事前に助けてくれてありがとう!
一つ目の回答です。
これは、スクリプトで明示的な日付または証明書の有効期限の範囲を確認するための開始点として使用できます。
===
$certHash = "D3A6E7B1746DFA37D4B93263AAA1348A2BA41720"
Get-ChildItem -Path cert:\LocalMachine\My -Recurse |
Where-Object {$_.Thumbprint -eq $cert} |
Select-Object NotAfter===
二つ目の回答です。
すべてのドメイン サーバーで今後 30 日以内に有効期限が切れる証明書を見つけるには、次の PowerShell スクリプトを使用します。
===
$servers= (Get-ADComputer -LDAPFilter "(&(objectCategory=computer)(operatingSystem=Windows Server*) (!serviceprincipalname=MSClusterVirtualServer) (!(userAccountControl:1.2.840.113556.1.4.803:=2)))").Name
$result=@()
foreach ($server in $servers)
{
$ErrorActionPreference="SilentlyContinue"
$getcert=Invoke-Command -ComputerName $server { Get-ChildItem -Path Cert:\LocalMachine\My -Recurse -ExpiringInDays 30}
foreach ($cert in $getcert) {
$result+=New-Object -TypeName PSObject -Property ([ordered]@{
'Server'=$server;
'Certificate'=$cert.Issuer;
'Expires'=$cert.NotAfter
})
}
}
Write-Output $result===
一番下のスクリプトは実際に動かしてみて動作しました。これをファイルに出力するようにして記載があればメール通知するなどの仕組みにすれば自動化できます。