.NETホスティング用の300以上の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 }
}'
これを行う最も簡単な方法は、次のフラグを使用してWebサイトを単純にカールさせることです。
curl -ILv https://yourdomainhere.com
出力では、次のような期限切れ文字列「expire date」が見つかります。
* expire date: 2016-05-19 20:59:53 GMT
pycurlを使用してこれを機能させ、文字列として取り込み、関連するデータを引き出します。または、次のpythonスクリプトを使用して* nixボックスからテストすることができます(少し大まかなものであり、微調整を使用してすべてのホスト/ドメインを受け入れて確認できます)。
import os
os.system("echo|openssl s_client -connect mydomain.com:443 | openssl x509 -noout -dates > ~/testfile.txt")