[PYTHON] Skript zum Abrufen des Ablaufdatums des SSL-Zertifikats

Ich habe hier darauf hingewiesen. http://qiita.com/uemura/items/a3a0937f77494e62213c

Vorausgesetzt, importiert und verwendet

Bei Verwendung über einen Befehl

$ ./cert_expires.py example.com google.com
example.com: 1093 days
google.com: 76 days

sert_expires.py


#!/usr/bin/env python


import sys
import re
import subprocess
import datetime


def parse_result_date_string(date_string):
    """
    convert date string to datetime
    >>> date_string = "Feb  2 05:47:50 2015 GMT"
    >>> d = parse_result_date_string(date_string)
    >>> d
    datetime.datetime(2015, 2, 2, 5, 47, 50)
    """
    d = datetime.datetime.strptime(date_string, '%b %d %H:%M:%S %Y %Z')
    return d


re_start = re.compile(r'Not Before: (.+)')
re_end = re.compile(r'Not After : (.+)')


def get_date_strings_from_result(result):
    """
    :return: cert start date, cert expire date
    >>> text = "Not Before: Feb  2 05:47:47 2015 GMT\\n" \\
    ...        "Not After : Feb  4 16:03:29 2016 GMT"
    >>> get_date_strings_from_result(text)
    ('Feb  2 05:47:47 2015 GMT', 'Feb  4 16:03:29 2016 GMT')
    """
    rr_start = re_start.search(result)
    rr_end = re_end.search(result)
    return rr_start.group(1) if rr_start else None, \
           rr_end.group(1) if rr_end else None


def get_cert_start_expire_date(domain):
    """
    :return: cert start date, cert expire date
    """
    command = "openssl s_client -connect {}:443 < /dev/null " \
              "2> /dev/null | openssl x509 -text | grep Not"

    command = command.format(domain)
    out = subprocess.check_output(command, shell=True)
    ss, es = get_date_strings_from_result(out)
    return parse_result_date_string(ss), parse_result_date_string(es)


def get_cert_expire_delta(domain):
    """
    time delta cert expire date and now
    """
    start_date, expire_date = get_cert_start_expire_date(domain)
    return expire_date - datetime.datetime.now()


def main():
    for domain in sys.argv[1:]:
        delta = get_cert_expire_delta(domain)
        print('{}: {} days'.format(domain, delta.days))


if __name__ == '__main__':
    main()

Recommended Posts

Skript zum Abrufen des Ablaufdatums des SSL-Zertifikats
Abrufen des Ablaufdatums des SSL-Zertifikats
Skript zum Ändern der Beschreibung von Fasta
Ein Memo eines Programms, das ein zweistelliges Datum mit Javascript, Ruby, Python oder einem Shell-Skript abruft.
Rufen Sie das Aktualisierungsdatum der Python-Memorandum-Datei ab.
Python-Skript zum Abrufen einer Liste von Eingabebeispielen für den AtCoder-Wettbewerb
Vorlage des Python-Skripts zum Lesen des Inhalts der Datei
Holen Sie sich den absoluten Pfad des laufenden Skripts
Holen Sie sich den Rückkehrcode eines Python-Skripts von bat
Erstellt einen Slack-Bot, der AWS Lambda über das Ablaufdatum eines SSL-Zertifikats bestätigt und benachrichtigt
Die Geschichte des Wechsels von WoSign zu Let's Encrypt für ein kostenloses SSL-Zertifikat
Holen Sie sich die Anzahl der Ziffern
Versuchen Sie, die Funktionsliste des Python> os-Pakets abzurufen
Ich habe versucht, die Standortinformationen des Odakyu-Busses zu erhalten
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
Keras Ich möchte die Ausgabe einer beliebigen Ebene erhalten !!
Um den Namen des Primitivs usw. zu erhalten, das unmittelbar zuvor generiert wurde
Holen Sie sich die Quelle der Seite unbegrenzt mit Python zu laden.
[OCI] Python-Skript zum Abrufen der IP-Adresse einer Recheninstanz in Cloud Shell
Ich möchte den Namen der ausgeführten Funktion / Methode erhalten
Setzen Sie das Datum der letzten Änderung der untergeordneten Datei auf das Änderungsdatum des übergeordneten Verzeichnisses
Holen Sie sich die Anzahl der Ansichten von Qiita
Shell-Skript (Linux, macOS), das das Datum der letzten Woche ausgibt
Ich habe versucht, den Index der Liste mithilfe der Aufzählungsfunktion abzurufen
So erhalten Sie die ID von Type2Tag NXP NTAG213 mit nfcpy
Bedingte Verzweigung aufgrund des Vorhandenseins einer Shell-Skriptdatei
Holen Sie sich das Site-Update-Datum ernst
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
Holen Sie sich den Skriptpfad in Python
So erhalten Sie die Python-Version
Ruft die Attribute eines Objekts ab
[Python] Ruft das Aktualisierungsdatum eines Nachrichtenartikels aus HTML ab
So ermitteln Sie die Scheitelpunktkoordinaten eines Features in ArcPy
Es ist überraschend mühsam, eine Liste mit dem Datum und der Uhrzeit der letzten Anmeldung von Arbeitsbereichen abzurufen
Erstellen Sie eine Funktion, um den Inhalt der Datenbank in Go abzurufen
Ergänzung zur Erklärung von vscode
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python
PhytoMine-I hat versucht, mit Python die genetischen Informationen der Pflanze zu erhalten
Ich habe versucht, die Trefferergebnisse von Hachinai mithilfe der Bildverarbeitung zu erhalten
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Klicken Sie auf die Selenium-Links, um die Elemente der einzelnen Seiten abzurufen
[Linux] Ein Befehl zum Abrufen einer Liste der in der Vergangenheit ausgeführten Befehle
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Versuchen Sie, den Zustand der Straßenoberfläche mithilfe von Big Data des Straßenoberflächenmanagements zu ermitteln
Ich habe versucht, das RSS des Top-Songs des iTunes Store automatisch abzurufen
Holen Sie sich den Songtitel aus dem Titel des von Ihnen gesungenen Videos
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Ruft den Rückgabewert eines externen Shell-Skripts (ls) mit python3 ab
Die Geschichte des Versuchs, den Client wieder zu verbinden
10 Methoden zur Verbesserung der Genauigkeit von BERT
So überprüfen Sie die Version von Django
Die Geschichte, MeCab in Ubuntu 16.04 zu setzen
Holen Sie sich die Spaltenliste und Datenliste von CASTable
Erhalten Sie Parlamentsprotokolle über API
Rufen Sie den Pfad zur systemd-Einheitendatei ab
So erhalten Sie eine farbige Ausgabe an die Konsole
Ermitteln Sie den Wert der mittleren Schicht von NN
Holen Sie sich den letzten Tag des angegebenen Monats