如何检查Windows 2008/2012服务器上部署的许多SSL证书的到期详细信息

我们有300多台用于.NET托pipe的Windows服务器,以及这些服务器上导入的大量SSL证书。 我们是否可以使用PowerShell或Python从单个Windows / Linux服务器获取所有服务器的证书到期详细信息?

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 } }' 

最简单的方法是使用下面的标志对网站进行简单的curl:

 curl -ILv https://yourdomainhere.com 

在输出中,你会发现一个过期的string“过期date”,看起来像这样:

 * expire date: 2016-05-19 20:59:53 GMT 

使用pycurl得到这个工作,以stringforms提取它,然后提取相关数据。 或者,您可以使用下面的python脚本来testing* nix框(这有点粗糙,可以使用调整来接受所有主机/域的检查):

 import os os.system("echo|openssl s_client -connect mydomain.com:443 | openssl x509 -noout -dates > ~/testfile.txt")