Zertifikatskette validieren

Sie lesen gerade die Dokumentation zu Apigee Edge.
Zur Dokumentation zu Apigee X.
info

In diesem Dokument wird erläutert, wie Sie eine Zertifikatskette validieren, bevor Sie das Zertifikat in einen Keystore oder Truststore in Apigee Edge hochladen. Der Prozess basiert auf dem OpenSSL-Toolkit zum Validieren der Zertifikats kette und kann in jeder Umgebung angewendet werden, in der OpenSSL verfügbar ist.

Hinweis

Bevor Sie die Schritte in diesem Dokument ausführen, sollten Sie mit den folgenden Themen vertraut sein:

  • Wenn Sie mit Zertifikatsketten nicht vertraut sind, lesen Sie den Artikel Vertrauenskette.
  • Wenn Sie mit der OpenSSL-Bibliothek nicht vertraut sind, lesen Sie OpenSSL.
  • Wenn Sie die Befehlszeilenbeispiele in dieser Anleitung verwenden möchten, installieren Sie die aktuelle Version des OpenSSL-Clients oder aktualisieren Sie die vorhandene Version.
  • Achten Sie darauf, dass die Zertifikate im PEM-Format vorliegen. Wenn die Zertifikate nicht im PEM-Format vorliegen, folgen Sie der Anleitung unter Zertifikate in ein unterstütztes Format konvertieren, um sie in das PEM-Format zu konvertieren.

Zertifikatssubjekt und -aussteller für die vollständige Kette validieren

Führen Sie die Schritte in den folgenden Abschnitten aus, um die Zertifikatskette mit OpenSSL-Befehlen zu validieren:

Zertifikatskette aufteilen

Bevor Sie das Zertifikat validieren, müssen Sie die Zertifikatskette mit den folgenden Schritten in separate Zertifikate aufteilen:

  1. Melden Sie sich auf dem Server an, auf dem sich der OpenSSL-Client befindet.
  2. Teilen Sie die Zertifikatskette in die folgenden Zertifikate auf (falls noch nicht geschehen):
    • Entitätszertifikat:entity.pem
    • Zwischenzertifikat:intermediate.pem
    • Root-Zertifikat:root.pem

Die folgende Abbildung zeigt eine Beispielzertifikatskette:

Ablauf der Zertifikatskette: Identitätszertifikat → Zwischenzertifikat → Root-Zertifikat

Zertifikatssubjekt und -aussteller überprüfen

In diesem Abschnitt wird beschrieben, wie Sie das Subjekt und den Aussteller der Zertifikate abrufen und prüfen, ob Sie eine gültige Zertifikatskette haben.

  1. Führen Sie den folgenden OpenSSL -Befehl aus, um das Subject und Issuer für jedes Zertifikat in der Kette von entity zu root abzurufen und zu prüfen, ob sie eine ordnungsgemäße Zertifikatskette bilden:
    openssl x509 -text -in certificate | grep -E '(Subject|Issuer):'
        

    Dabei ist „certificate“ der Name des Zertifikats.

  2. Prüfen Sie, ob die Zertifikate in der Kette die folgenden Richtlinien einhalten:
    • Subject jedes Zertifikats stimmt mit dem Issuer des vorherigen Zertifikats in der Kette überein (außer beim Entity-Zertifikat).
    • Subject und Issuer sind für das Root-Zertifikat identisch.

    Wenn die Zertifikate in der Kette diese Richtlinien einhalten, gilt die Zertifikatskette als vollständig und gültig.

    Beispiel für die Validierung einer Zertifikatskette

    Das folgende Beispiel zeigt die Ausgabe der OpenSSL-Befehle für eine Beispielzertifikatskette mit drei Zertifikaten:

    Entitätszertifikat

    openssl x509 -text -in entity.pem | grep -E '(Subject|Issuer):'
    
    Issuer: C = US, O = Google Trust Services, CN = GTS CA 1O1
    Subject: C = US, ST = California, L = Mountain View, O = Google LLC, CN = *.enterprise.apigee.com
            

    Zwischenzertifikat

    openssl x509 -text -in intermediate.pem  | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: C = US, O = Google Trust Services, CN = GTS CA 1O1
            

    Root-Zertifikat

    openssl x509 -text -in root.pem | grep -E '(Subject|Issuer):'
    
    Issuer: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
    Subject: OU = GlobalSign Root CA - R2, O = GlobalSign, CN = GlobalSign
            

    Beachten Sie im obigen Beispiel Folgendes:

    • Das Subject des Zwischenzertifikats stimmt mit dem Issuer des Entitätszertifikats überein.
    • Das Subject des Root-Zertifikats stimmt mit dem Issuer des Zwischenzertifikats überein.
    • Subject und Issuer sind im Root-Zertifikat identisch.

    Aus dem obigen Beispiel können Sie bestätigen, dass die Beispielzertifikatskette gültig ist.

Hash des Zertifikatssubjekts und -ausstellers überprüfen

In diesem Abschnitt wird erläutert, wie Sie den Hash des Subjekts und des Ausstellers der Zertifikate abrufen und prüfen, ob Sie eine gültige Zertifikatskette haben.

Es ist immer empfehlenswert, die Hash-Sequenz von Zertifikaten zu überprüfen, da dies bei der Identifizierung von Problemen helfen kann, z. B. wenn der allgemeine Name (Common Name, CN) des Zertifikats unerwünschte Leerzeichen oder Sonderzeichen enthält.

  1. Führen Sie den folgenden OpenSSL -Befehl aus, um die hash Sequenz für jedes Zertifikat in der Kette von entity zu root abzurufen und zu prüfen, ob sie eine ordnungsgemäße Zertifikatskette bilden.
  2. openssl x509 -hash -issuer_hash -noout -in certificate
        

    Dabei ist „certificate“ der Name des Zertifikats.

  3. Prüfen Sie, ob die Zertifikate in der Kette die folgenden Richtlinien einhalten:
    • Subject jedes Zertifikats stimmt mit dem Issuer des vorherigen Zertifikats in der Kette überein (außer beim Entity-Zertifikat).
    • Subject und Issuer sind für das Root-Zertifikat identisch.

    Wenn die Zertifikate in der Kette diese Richtlinien einhalten, gilt die Zertifikatskette als vollständig und gültig.

    Beispiel für die Validierung einer Zertifikatskette über die Hash-Sequenz

    Das folgende Beispiel zeigt die Ausgabe der OpenSSL-Befehle für eine Beispielzertifikatskette mit drei Zertifikaten:

    openssl x509 -in entity.pem -hash -issuer_hash -noout
    c54c66ba #this is subject hash
    99bdd351 #this is issuer hash
        
    openssl x509 -in intermediate.pem -hash -issuer_hash -noout
    99bdd351
    4a6481c9
        
    openssl x509 -in root.pem -hash -issuer_hash -noout
    4a6481c9
    4a6481c9
        

    Beachten Sie im obigen Beispiel Folgendes:

    • Der subject hash des Zwischenzertifikats stimmt mit dem issuer hash des Entitäts zertifikats überein.
    • Der subject hash des Root-Zertifikats stimmt mit dem issuer hash des Ausstellerzertifikats überein.
    • subject und issuer hash sind im Root-Zertifikat identisch.

    Aus dem obigen Beispiel können Sie bestätigen, dass die Beispielzertifikatskette gültig ist.

Ablauf des Zertifikats überprüfen

In diesem Abschnitt wird erläutert, wie Sie mit einer der folgenden Methoden prüfen, ob alle Zertifikate in der Kette abgelaufen sind:

  • Start- und Enddatum des Zertifikats abrufen.
  • Ablaufstatus abrufen.

Start- und Enddatum

Führen Sie den folgenden OpenSSL -Befehl aus, um das Start- und Enddatum für jedes Zertifikat in der Kette von entity zu root abzurufen und zu prüfen, ob alle Zertifikate in der Kette gültig sind (Startdatum liegt vor dem heutigen Tag) und nicht abgelaufen sind.

Beispiel für die Validierung des Ablaufs von Zertifikaten anhand von Start- und Enddatum

openssl x509 -startdate -enddate -noout -in entity.pem
notBefore=Feb  6 21:57:21 2020 GMT
notAfter=Feb  4 21:57:21 2021 GMT
openssl x509 -startdate -enddate -noout -in intermediate.pem
notBefore=Jun 15 00:00:42 2017 GMT
notAfter=Dec 15 00:00:42 2021 GMT
openssl x509 -startdate -enddate -noout -in root.pem
notBefore=Apr 13 10:00:00 2011 GMT
notAfter=Apr 13 10:00:00 2022 GMT

Ablaufstatus

Führen Sie den folgenden OpenSSL -Befehl aus, um zu prüfen, ob das Zertifikat bereits abgelaufen ist oder in den nächsten N seconds abläuft. Dadurch wird der Ablaufstatus des Zertifikats im Kontext des aktuellen Systemdatums zurückgegeben.

openssl x509 -checkend <N Seconds> -noout -in certificate

Dabei ist „certificate“ der Name des Zertifikats.

Beispiel für die Validierung des Ablaufs von Zertifikaten mit der Option „checkend“

Der folgende Befehl verwendet 0 seconds, um zu prüfen, ob das Zertifikat bereits abgelaufen ist:

openssl x509 -checkend 0 -noout -in entity.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in intermediate.pem
Certificate will not expire
openssl x509 -checkend 0 -noout -in root.pem
Certificate will not expire

In diesem Beispiel gibt die Meldung Certificate will not expire an, dass das Zertifikat noch nicht abgelaufen ist.