我们有 300 多台用于 .NET 托管的 Windows 服务器,并在这些服务器上导入了大量 SSL 证书。我们可以使用 PowerShell 或 Python 从单个 Windows/Linux 服务器中提取所有服务器的证书到期详细信息吗?
答案1
Get-ChildItem cert:\LocalMachine\My
将列出所有已安装的机器证书。
要对远程服务器执行相同操作,请使用远程处理:
Invoke-Command -ComputerName $servername -ScriptBlock {Get-ChildItem cert:\LocalMachine\My}
或所有服务器:
$certs = Get-ADComputer -SearchBase 'ou=servers,dc=something,dc=com' -filter *
| % { Invoke-Command -ComputerName $_.name -ScriptBlock
{ Get-ChildItem cert:\LocalMachine\my }
}'
答案2
最简单的方法是使用以下标志对网站进行简单的卷曲:
curl -ILv https://yourdomainhere.com
在输出中,你会发现一个过期字符串“expire date”,如下所示:
* expire date: 2016-05-19 20:59:53 GMT
使用 pycurl 使其工作,将其作为字符串提取,然后提取相关数据。或者,您可以使用以下用于 *nix 框的 python 脚本进行测试(它有点粗糙,可以使用调整来接受所有主机/域进行检查):
import os
os.system("echo|openssl s_client -connect mydomain.com:443 | openssl x509 -noout -dates > ~/testfile.txt")