情况:一台 IIS 7.5 服务器有 30 多个站点和 10 多个证书,但一些证书可能已过时。过时意味着它们未绑定到 IIS 上任何站点的 ip:port。
我可以通过 GUI 检查每个站点绑定,但这似乎不是最快的方法。
使用什么命令可以获取使用特定证书的站点列表(给定其通用名称,例如)*.example.com
。我想我至少需要netsh http show sslcert
,但该输出仅显示证书哈希,而不显示站点名称。
答案1
我正在使用以下 PowerShell 脚本查看框中的所有证书并尝试在 IIS SSL 绑定中找到它。
import-module WebAdministration
ls cert:\LocalMachine\my | select * | foreach {
$found = $false
$tp = $_.Thumbprint
ls IIS:\SslBindings | Foreach {
if ($_.Thumbprint -eq $tp)
{
Write-Host "Used in $($_.IpAddress) $($_.Host)"
$found = $true
}
}
if ($found)
{
Write-Host $tp -foregroundcolor green
Write-Host $_.Subject -foregroundcolor green
Write-Host $_.NotAfter -foregroundcolor green
}
else
{
Write-Host "Not in use"
Write-Host $tp -foregroundcolor red
Write-Host $_.Subject -foregroundcolor red
Write-Host $_.NotAfter -foregroundcolor red
}
Write-Host "***************************************************************"
}