Ich habe mehrere SSL-Zertifikate und möchte benachrichtigt werden, wenn ein Zertifikat abgelaufen ist.
Meine Idee ist es, einen Cronjob zu erstellen, der jeden Tag einen einfachen Befehl ausführt.
Ich weiß, dass der openssl
Befehl in Linux verwendet werden kann, um die Zertifikatsinformationen des Remote-Servers anzuzeigen, dh:
openssl s_client -connect www.google.com:443
In dieser Ausgabe wird das Ablaufdatum jedoch nicht angezeigt. Außerdem muss ich diesen Befehl mit CTRL+ beenden c.
Wie kann ich den Ablauf eines Remote-Zertifikats anhand eines Skripts (vorzugsweise mithilfe von openssl
) überprüfen und im "Batch-Modus" ausführen, sodass es automatisch ohne Benutzerinteraktion ausgeführt wird?
-servername www.google.com
für SNI - Servern aktiviert , um die Notwendigkeit für die Beendigung Send / dev / null , um es zu vermeiden< /dev/null
Antworten:
Ihr Befehl würde nun eine http-Anfrage wie
GET index.php
zum Beispiel erwarten . Verwenden Sie dies stattdessen:true
: gibt nur keine Eingabe gefolgt von eof, so dass openssl nach dem Verbinden beendet wird.openssl ...
: der Befehl aus Ihrer Frage2>/dev/null
: Fehlerausgabe wird ignoriert.openssl x509
: Aktiviert die X.509-Zertifikatdatenverwaltung.-noout
: Unterdrückt die gesamte Zertifikatausgabe-checkend 0
: Überprüfen Sie, ob das Zertifikat in den nächsten 0 Sekunden abgelaufen istquelle
-checkend
so viel einfacher als das Skript, das ich für Datumsberechnung befunden hatte!Sie erhalten das Zertifikat, es wird jedoch nicht dekodiert. Da dies erforderlich wäre, wenn Sie das Datum wünschen, wird es nicht angezeigt. Also müssen Sie es in die OpenSSL-
x509
Anwendung leiten, um das Zertifikat zu dekodieren:Auf diese Weise erhalten Sie das vollständig dekodierte Zertifikat auf stdout, einschließlich der Gültigkeitsdauer.
quelle
Wenn Sie das Ablaufdatum überprüfen müssen, haben Sie dank dieses Blogposts eine Möglichkeit gefunden, diese Informationen mit anderen relevanten Informationen mit einem einzigen Anruf zu finden:
Die Ausgabe umfasst den Aussteller, den Betreff (für den das Zertifikat ausgestellt wurde), das Ausstellungsdatum und das endgültige Ablaufdatum :
quelle