Überprüfen Sie die SSL-Zertifikate auf Widerruf

Heutzutage ist die Verschlüsselung einer der wichtigsten Aspekte der sicheren Informationsübertragung. Vom Client zum Server übertragene Daten werden mit einem SSL-Zertifikat verschlüsselt. Ein Zertifikat ist ein öffentlicher Schlüssel, der von einer Zertifizierungsstelle zertifiziert wurde.

Alle SSL-Zertifikate werden in der Regel für einen begrenzten Zeitraum ausgestellt. Danach verfallen sie und müssen erneut ausgestellt werden. Es gibt jedoch Zeiten, in denen ein Zertifikat vor dem Ablaufdatum widerrufen werden kann. Es gibt viele Gründe für den Widerruf des SSL-Zertifikats. Der häufigste Grund ist, dass der private Schlüssel verloren gegangen oder kompromittiert, Unternehmensregistrierungsdaten geändert usw. wurden.

Es gibt zwei alternative Möglichkeiten, um zu überprüfen, ob ein SSL-Zertifikat in den Sperrlisten enthalten ist:

  • CRL (Certificate Revocation List) - Überprüft, ob die Zertifikatseriennummer in der Sperrliste vorhanden ist.
  • OCSP (Online Certificate Status Protocol) - Das Zertifikat wird an einen spezialisierten Server gesendet, wo sein Status überprüft wird.

Schauen wir uns diese beiden Methoden mithilfe der Ubuntu-Konsole genauer an. Lassen Sie uns als Beispiel das Zertifikat für die habr.com-Domain zur Überprüfung überprüfen.

CRL


Laden Sie das Zertifikat der Domain herunter, an der wir interessiert sind:

echo -n | openssl s_client -connect habr.com:443 -servername habr.com 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/habr.com.crt 

Vielen Dank an Legioner für den Hinweis, den Parameter -servername hinzuzufügen. Für die richtige Zertifikatauswahl ist es erforderlich, wenn mehrere (SNI-) Zertifikate auf derselben IP-Adresse installiert sind.

Wir sehen uns die Details des Zertifikats an:

 openssl x509 -noout -text -in /tmp/habr.com.crt 

Hier interessiert uns der Abschnitt "X509v3 CRL-Verteilungspunkte" unter "Vollständiger Name".

Laden Sie die CLR-Liste von diesem Link herunter:

 wget http://crl.comodoca.com/COMODORSADomainValidationSecureServerCA.crl 

Wir wählen die Seriennummer des Zertifikats aus:

 openssl x509 -in /tmp/habr.com.crt -noout -serial 

Wir prüfen, ob diese Nummer in der CRL-Liste enthalten ist:

 openssl crl -inform DER -text -in COMODORSADomainValidationSecureServerCA.crl | grep "90E58B0601C3AD98F07AEE092041C437" 

Wenn nichts gefunden wurde, wird das Zertifikat nicht widerrufen.

OCSP


Wir zeigen das Zertifikat der für uns interessanten Domäne und die Kette der Zwischenzertifikate an:

 echo -n | openssl s_client -connect habr.com:443 -showcerts 

Speichern Sie das Domänenzertifikat und das Zwischenzertifikat (den Code zwischen den Zeilen ----- BEGIN CERTIFICATE ----- und ----- END CERTIFICATE -----) in den Dateien:

 /tmp/habr.com.crt /tmp/intermediate.crt 

Definieren Sie einen OCSP-Server:

 openssl x509 -in /tmp/habr.com.crt -noout -ocsp_uri 

Wir senden eine Anfrage an den OCSP-Server, um das Zertifikat auf Widerruf zu überprüfen:

 openssl ocsp -url http://ocsp.comodoca.com -issuer /tmp/intermediate.crt -cert /tmp/habr.com.crt -text 

Wenn alles korrekt angegeben ist, sollte der OCSP-Server Informationen zum Zertifikat zurückgeben.

Hier sind die letzten interessanten Zeilen:

 Response verify OK /tmp/habr.com.crt: good 

Das Fehlen eines Zertifikats in der Liste der widerrufenen Zertifikate wird durch den Wert "gut" angezeigt. Wenn das Zertifikat widerrufen wurde, wird der Wert "widerrufen".

Automatisierung


Das manuelle Überprüfen von SSL-Zertifikaten auf Widerruf ist nicht immer bequem, sodass der Überprüfungsprozess automatisiert werden kann.

Dazu verwenden wir das vorgefertigte Skript ssl-check-revoc.sh mit Github , das die Zertifikate mit der CRL-Methode überprüft:

 wget https://raw.githubusercontent.com/o-pod/security/master/ssl-check-revoc.sh 

Als nächstes machen Sie das Skript ausführbar:

 chmod a+x ssl-check-revoc.sh 

Jetzt können Sie sowohl die bereits installierten Zertifikate für die Domäne als auch die lokal in Dateien gespeicherten Zertifikate überprüfen (Option -f):

 ./ssl-check-revoc.sh habr.com -v 

Zabbix


Das Skript ssl-check-revoc.sh kann Zertifikate nicht nur von der Konsole aus überprüfen, sondern eignet sich auch gut als Prüfer für Zabbix. Daher kann die gesamte schmutzige Arbeit beim Verfolgen von Zertifikaten, die in die Sperrliste aufgenommen werden, dem Überwachungssystem anvertraut werden.

Wir gehen in die Zabbix-Konfiguration /etc/zabbix/zabbix_server.conf und sehen, wo sich die Skripte für externe Überprüfungen befinden:

 ExternalScripts=/etc/zabbix/externalscripts 

Wir kopieren unser Skript in dieses Verzeichnis und starten Zabbix neu:

 sudo cp ssl-check-revoc.sh /etc/zabbix/externalscripts/ sudo systemctl restart zabbix-server 

Wir gehen in die Weboberfläche und erstellen eine Vorlage (Konfiguration >> Vorlagen >> Vorlage erstellen). Geben Sie als Namen der Vorlage "Vorlagen-SSL-Prüfung" an. Erstellen Sie dann in der Vorlage ein Element "SSL-Zertifikat in Widerrufsliste" (Element) und geben Sie als Schlüssel "ssl-check-revoc.sh [{HOST.NAME}]" an. Die Art der Prüfung lautet "Externe Prüfung". Das Inspektionsintervall kann nach eigenem Ermessen festgelegt werden, abhängig von der Kritikalität des Projekts.



Sie benötigen außerdem zwei Auslöser:

1. Um den Widerruf des Zertifikats zu signalisieren "Zertifikat für Domain {HOST.NAME} befindet sich in Widerrufsliste"
Ausdruck: "{Template Custom SSL Checking: ssl-check-revoc.sh [{HOST.NAME}]. Last ()} = 1"



2. Um einen Fehler zu signalisieren, falls etwas schief geht (z. B. gibt es Probleme mit dem CLR-Server usw.) "Fehler beim Überprüfen des Zertifikats für die Domäne {HOST.NAME}"
Ausdruck: "{Template Custom SSL Checking: ssl-check-revoc.sh [{HOST.NAME}]. Last ()} = 2"



Vergessen Sie in den Aktionen (Konfiguration >> Aktionen) nicht, die Benachrichtigungsmethode bei Triggern zu konfigurieren.

Jetzt müssen noch Hosts erstellt werden, deren Zertifikate wir regelmäßig überprüfen werden (Konfiguration >> Hosts >> Host erstellen). Verknüpfen Sie auf der Registerkarte Vorlagen unsere Vorlage für die SSL-Überprüfung von Vorlagen.



Und alle! Sie können ruhig schlafen: Wenn das SSL-Zertifikat Ihrer Domain aus irgendeinem Grund in die Liste der widerrufenen Zertifikate fällt, werden Sie von Zabbix unverzüglich informiert.

Source: https://habr.com/ru/post/de417521/


All Articles