web-dev-qa-db-ja.com

Windows 2008/2012サーバーにデプロイされた多くのSSL証明書の有効期限の詳細を確認する方法

.NETホスティング用の300以上のWindowsサーバーと、これらのサーバーにインポートされた多くのSSL証明書があります。 PowerShellまたはPythonを使用して、単一のWindows/Linuxサーバーからすべてのサーバーの証明書の有効期限の詳細を取得できますか?

2
johny99411

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

これを行う最も簡単な方法は、次のフラグを使用して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")
0
86bornprgmr