У нас есть более 300 серверов Windows для хостинга .NET и много сертификатов SSL, импортированных на эти серверы. Можем ли мы получить сведения об истечении срока действия сертификата для всех серверов с одного сервера Windows / Linux с помощью PowerShell или Python?
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 -ILv https://yourdomainhere.com
в выходных данных вы найдете строку истечения срока «срок действия», которая выглядит примерно так:
* 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")