Fehlerbehebung bei SSL-Zertifikaten

In diesem Dokument wird beschrieben, wie Sie häufige Probleme mit von Google verwalteten und selbstverwalteten SSL-Zertifikatendiagnostizieren und beheben. Gültige SSL-Zertifikate schützen Daten bei der Übertragung und sorgen für die Verfügbarkeit von Diensten für Ihre Load-Balancing-Bereitstellungen.

Fehlerbehebung bei von Google verwalteten Zertifikaten

Für von Google verwaltete Zertifikate gibt es zwei Statustypen:

  • Verwaltet
  • Domainstatus

Verwaltet

Führen Sie den folgenden Befehl aus, um den Zertifikatstatus zu prüfen:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --global \
    --format="get(name,managed.status)"

Der Status verwaltet kann folgende Werte haben:

Verwaltet Erklärung
PROVISIONING

Das von Google verwaltete Zertifikat wurde erstellt und Google Cloud arbeitet mit der Zertifizierungsstelle zusammen, um es zu signieren.

Die Bereitstellung eines von Google verwalteten Zertifikats kann bis zu 60 Minuten dauern, nachdem die DNS- und Load-Balancer-Konfigurationsänderungen im Internet wirksam wurden. Wenn Sie Ihre DNS-Konfiguration kürzlich aktualisiert haben, kann es einige Zeit dauern, bis die Änderungen vollständig weitergegeben wurden. Manchmal dauert die Weitergabe bis zu 72 Stunden weltweit, wobei es in der Regel einige Stunden dauert. Weitere Informationen zur DNS-Weitergabe finden Sie unter Weitergabe von Änderungen.

Wenn das Zertifikat weiterhin den Status PROVISIONING hat, prüfen Sie, ob das richtige Zertifikat mit dem Zielproxy verknüpft ist. Sie können dies mit dem Befehl gcloud compute target-https-proxies describe oder dem Befehl gcloud compute target-ssl-proxies describe prüfen.

ACTIVE Das von Google verwaltete SSL-Zertifikat erhalten Sie von der Zertifizierungsstelle. Es kann zusätzliche 30 Minuten dauern, bis es von einem Load-Balancer verwendet werden kann.
PROVISIONING_FAILED Möglicherweise sehen Sie PROVISIONING_FAILED kurz, auch wenn Ihr Zertifikat tatsächlich ACTIVE ist. Prüfen Sie den Status noch einmal.

Wenn der Status weiter PROVISIONING_FAILED ist, wurde das von Google verwaltete Zertifikat erstellt, die Zertifizierungsstelle kann es aber nicht signieren. Prüfen Sie, ob Sie alle Schritte unter Von Google verwaltete SSL-Zertifikate verwenden ausgeführt haben.

Google Cloud wiederholt die Bereitstellung solange, bis sie erfolgreich ist oder sich der Status zu PROVISIONING_FAILED_PERMANENTLY.
PROVISIONING_FAILED_PERMANENTLY Das von Google verwaltete Zertifikat wurde erstellt, kann aber wegen eines DNS- oder Load-Balancer-Konfigurationsproblems von der Zertifizierungsstelle nicht signiert werden. In diesem Fall Google Cloud wiederholt die Bereitstellung nicht.

Erstellen Sie ein von Google verwaltetes SSL-Ersatzzertifikat und achten Sie darauf dass der Ersatz dem Zielproxy Ihres Load-Balancers zugeordnet ist. Prüfen Sie die Schritte unter Von Google verwaltete SSL-Zertifikate verwenden und führen Sie sie aus, falls noch nicht geschehen. Anschließend können Sie das Zertifikat löschen, das dauerhaft nicht bereitgestellt werden konnte.
RENEWAL_FAILED

Die von Google verwaltete Zertifikatverlängerung ist aufgrund eines Problems mit dem Load-Balancer oder der DNS-Konfiguration fehlgeschlagen. Wenn eine der Domains oder Subdomains in einem verwalteten Zertifikat nicht mithilfe eines A/AAAA-Eintrags auf die IP-Adresse des Load-Balancers verweist, schlägt die Verlängerung fehl. Das vorhandene Zertifikat wird weiterhin verwendet, läuft aber bald ab. Überprüfen Sie die Konfiguration.

Wenn der Status RENEWAL_FAILED bleibt, stellen Sie ein neues Zertifikat bereit, wechseln Sie zur Verwendung des neuen Zertifikats und löschen Sie das vorherige Zertifikat.

Weitere Informationen zur Verlängerung der Zertifikate finden Sie unter Von Google verwaltete SSL-Zertifikatsverlängerung.

Domainstatus

Führen Sie den folgenden Befehl aus, um den Domainstatus zu prüfen:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --global \
    --format="get(managed.domainStatus)"

Die Werte für den Domainstatus werden in dieser Tabelle beschrieben.

Domainstatus Erklärung
PROVISIONING Das von Google verwaltete Zertifikat wird für die Domain erstellt. Google Cloud arbeitet mit der Zertifizierungsstelle zusammen, um das Zertifikat zu signieren.
ACTIVE Die Domain wurde erfolgreich für die Bereitstellung des Zertifikats validiert. Wenn das SSL-Zertifikat für mehrere Domains bestimmt ist, kann das Zertifikat nur bereitgestellt werden, wenn alle Domains den Status ACTIVE haben und der verwaltete Status des Zertifikats ebenfalls ACTIVE lautet.
FAILED_NOT_VISIBLE

Die Bereitstellung von Zertifikaten für die Domain wurde nicht abgeschlossen. Möglicherweise liegt eines der folgenden Probleme vor:

  • Der DNS-Eintrag der Domain wird nicht der IP-Adresse des Google Cloud Load-Balancers zugeordnet. Zur Behebung dieses Problems, aktualisieren Sie die DNS A/AAAA-Einträge so, dass sie auf die IP-Adresse des Load-Balancers verweisen.

    DNS darf nicht zu einer anderen IP-Adresse als der des Load-Balancers aufgelöst werden. Wenn beispielsweise ein A-Eintrag in den richtigen Load-Balancer aufgelöst wird, die AAAA jedoch zu einem anderen Wert aufgelöst wird, lautet der Domainstatus FAILED_NOT_VISIBLE.

  • Neu aktualisierte DNS-A- und AAAA-Einträge können sehr lange dauern, bis sie vollständig weitergegeben werden. Manchmal dauert die Übertragung im Internet bis zu 72 Stunden, obwohl dies in der Regel einige Stunden dauert. Der Domainstatus bleibt so lange FAILED_NOT_VISIBLE, bis die Weitergabe abgeschlossen ist.
  • Das SSL-Zertifikat ist nicht mit dem Zielproxy des Load-Balancers verknüpft. Um dieses Problem zu beheben, aktualisieren Sie Ihre Load-Balancer-Konfiguration.
  • Die Frontend-Ports für die Weiterleitungsregel enthalten für Application Load Balancer (global oder klassisch) oder externe Proxy-Network Load Balancer nicht Port 443. Hierzu können Sie eine neue Weiterleitungsregel mit Port 443 hinzufügen.
  • Mit dem Zielproxy ist eine Zertifikatmanager-Zertifikatszuordnung verknüpft. Die angehängte Zertifikatzuordnung hat Vorrang und direkt angehängte Zertifikate werden ignoriert. Dies kann durch Trennen der Zertifikatszuordnung vom Proxy behoben werden.
  • Wenn der verwaltete Status PROVISIONING lautet, Google Cloud versucht weiterhin, die Bereitstellung auch dann durchzuführen, wenn der Domainstatus FAILED_NOT_VISIBLE ist.
FAILED_CAA_CHECKING Die Bereitstellung von Zertifikaten ist fehlgeschlagen, da ein Konfigurationsproblem mit dem CAA-Eintrag Ihrer Domain festgestellt wurde. Achten Sie darauf, dass Sie dem richtigen Ablauf gefolgt sind.
FAILED_CAA_FORBIDDEN Die Bereitstellung von Zertifikaten ist fehlgeschlagen, da der CAA-Eintrag Ihrer Domain keine von zu verwendende Zertifizierungsstelle angibt. Google Cloud Achten Sie darauf, dass Sie dem richtigen Ablauf gefolgt sind.
FAILED_RATE_LIMITED Die Bereitstellung von Zertifikaten ist fehlgeschlagen, da eine Zertifizierungsstelle befristete Anfragen für Zertifikatsignaturen hat. Sie können ein neues Zertifikat bereitstellen, zur Verwendung des neuen Zertifikats wechseln und das vorherige Zertifikat löschenoder den Google Cloud Support kontaktieren.

Verlängerung des verwalteten Zertifikats

Damit Ihre Zertifikate den Schritt der Domainbestätigung im Verlängerungsprozess nicht bestehen, prüfen Sie die Anforderungen für Ihre DNS-A- und AAAA Einträge.

Domainbestätigung aus mehreren Perspektiven

Google Cloud verlängert Ihre von Google verwalteten Zertifikate regelmäßig, indem sie bei Zertifizierungsstellen (CAs) angefordert werden. Die Zertifizierungsstellen, mit denen Google Cloud zusammenarbeitet, um Ihre Zertifikate zu verlängern, verwenden eine Methode zur Domainbestätigung aus mehreren Perspektiven , die als Multi-Perspective Issuance Corroboration (MPIC) bezeichnet wird. Im Rahmen dieses Prozesses bestätigen die Zertifizierungsstellen die Domainkontrolle, indem sie die DNS-Einstellungen der Domain prüfen und versuchen, den Server hinter der IP-Adresse der Domain zu kontaktieren. Diese Bestätigungen werden von mehreren Standorten im Internet aus durchgeführt. Wenn die Bestätigung fehlschlägt, können von Google verwaltete Zertifikate nicht verlängert werden. Infolgedessen stellt Ihr Load-Balancer Clients ein abgelaufenes Zertifikat zur Verfügung, was dazu führt, dass Browsernutzer Zertifikatfehler erhalten und API-Clients Verbindungsfehler haben.

Damit Fehler bei der Domainbestätigung aus mehreren Perspektiven aufgrund falsch konfigurierter DNS-Einträge vermieden werden, beachten Sie Folgendes:

  • Ihre DNS-A-Einträge (IPv4) und DNS-AAAA-Einträge (IPv6) für Ihre Domains und Subdomains verweisen nur auf die IP-Adresse (n), die der Weiterleitungsregel (oder den Weiterleitungsregeln) des Load-Balancers zugeordnet sind. Das Vorhandensein anderer Adressen im Eintrag kann dazu führen, dass die Bestätigung fehlschlägt.
  • Die Zertifizierungsstelle, die die Bestätigung von DNS-Einträgen durchführt, fragt DNS-Einträge von mehreren Standorten aus ab. Achten Sie darauf, dass Ihr DNS-Anbieter auf alle globalen Domainbestätigungsanfragen einheitlich reagiert.
  • Die Verwendung von GeoDNS (zurückgeben verschiedener IP-Adressen basierend auf dem Standort der Anfrage ) oder standortbasierten DNS-Richtlinien kann zu inkonsistenten Antworten führen und dazu führen, dass die Bestätigung fehlschlägt. Wenn Ihr DNS-Provider GeoDNS verwendet, deaktivieren Sie es, oder sorgen Sie dafür, dass alle Regionen dieselbe IP-Adresse des Load-Balancers zurückgeben.
  • Sie müssen die IP-Adressen Ihres Load-Balancers explizit in Ihrer DNS-Konfiguration angeben. Zwischenschichten wie ein CDN können zu unvorhersehbarem Verhalten führen. Die IP Adresse muss direkt erreichbar sein, ohne Weiterleitungen, Firewalls oder CDNs im Anfragepfad. Weitere Informationen finden Sie in diesem Dokument im Abschnitt Load-Balancer hinter einem CDN.
  • Wir empfehlen, einen DNS-Global-Propagation-Checker Ihrer Wahl zu verwenden, um zu prüfen, ob alle relevanten DNS-Einträge weltweit korrekt und einheitlich aufgelöst werden.

Konfigurationsänderungen überprüfen

Nachdem Sie Ihre DNS-Einträge konfiguriert haben, können Sie prüfen, ob sie korrekt sind, indem Sie ein neues Zertifikat erstellen und es zusammen mit dem vorhandenen Zertifikat mit Ihrem Load-Balancer verbinden. Mit diesem Schritt wird sofort eine Zertifikatbereitstellungsprüfung bei der Zertifizierungsstelle erzwungen, sodass Sie Ihre Konfigurationsänderungen innerhalb weniger Minuten überprüfen können. Ohne diese Prüfung kann die automatische Verlängerung des vorhandenen Zertifikats Tage oder Wochen dauern, was zu Unsicherheit bei der Einrichtung führt.

Wenn der Zertifikatstatus ACTIVE lautet, wurde das Zertifikat ausgestellt und Ihre DNS-Konfiguration ist korrekt. An diesem Punkt empfehlen wir, das frühere Zertifikat zu entfernen, um zwei separate Zertifikate für dieselbe Domain zu vermeiden. Dieser Vorgang unterbricht den Traffic zu Ihrem Load-Balancer nicht.

Das neue Zertifikat dient als Validierungstool. Seine Erstellung bestätigt, dass die Domainbestätigung aus mehreren Perspektiven mit MPIC für Ihre Einrichtung korrekt funktioniert.

Load-Balancer hinter einem CDN

Bei Load-Balancern, für die CDN aktiviert ist, verhindern einige CDN-Provider von Drittanbietern im Anfragepfad möglicherweise, dass Validierungsanfragen erfolgreich ausgeführt werden. Das kann auftreten, wenn der CDN-Provider HTTP(S)-Traffic aktiv weiterleitet.

In solchen Fällen empfehlen wir, Ihre Zertifikate zu Zertifikatmanager zu migrieren und die DNS-Autorisierungsmethode zu verwenden, um von Google verwaltete Zertifikate bereitzustellen. Bei der letzteren Methode muss die Zertifizierungsstelle Ihren Load-Balancer nicht kontaktieren.

Fehlerbehebung bei selbstverwalteten SSL-Zertifikaten

In dieser Anleitung wird beschrieben, wie Sie Probleme bei der Konfiguration selbstverwalteter SSL-Zertifikate beheben.

Das Zertifikat kann nicht geparst werden

Google Cloud erfordert Zertifikate im PEM Format. Wenn das Zertifikat im PEM-Format vorliegt, prüfen Sie Folgendes:

Sie können Ihr Zertifikat mithilfe des folgenden OpenSSL-Befehls validieren. Ersetzen Sie dabei CERTIFICATE_FILE durch den Pfad zu Ihrer Zertifikatsdatei:

openssl x509 -in CERTIFICATE_FILE -text -noout

Wenn OpenSSL Ihr Zertifikat nicht parsen kann:

Fehlender gemeinsamer Name oder alternativer Antragstellername

Google Cloud erfordert, dass Ihr Zertifikat entweder einen gemeinsamen Namen (CN) oder einen alternativen Antragstellernamen (SAN) hat. Weitere Informationen erhalten Sie unter Create a CSR.

Wenn beide Attribute fehlen, Google Cloud zeigt eine Fehlermeldung wie die folgende an, wenn Sie versuchen, ein selbstverwaltetes Zertifikatzu erstellen:

ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
 -   The SSL certificate is missing a Common Name(CN) or Subject Alternative
   Name(SAN).

Der private Schlüssel kann nicht geparst werden

Google Cloud erfordert private Schlüssel im PEM-Format, die die Kriterien für private Schlüssel erfüllen.

Sie können Ihren privaten Schlüssel mit dem folgenden OpenSSL-Befehl validieren. Ersetzen Sie dabei PRIVATE_KEY_FILE durch den Pfad zu Ihrem privaten Schlüssel:

    openssl rsa -in PRIVATE_KEY_FILE -check

Die folgenden Antworten weisen auf ein Problem mit Ihrem privaten Schlüssel hin:

  • unable to load Private Key
  • Expecting: ANY PRIVATE KEY
  • RSA key error: n does not equal p q
  • RSA key error: d e not congruent to 1
  • RSA key error: dmp1 not congruent to d
  • RSA key error: dmq1 not congruent to d
  • RSA key error: iqmp not inverse of q

Zur Behebung des Problems müssen Sie einen neuen privaten Schlüssel und ein neues Zertifikat erstellen.

Private Schlüssel mit Passphrasen

Wenn Sie von OpenSSL zur Eingabe einer Passphrase aufgefordert werden, müssen Sie die Passphrase aus Ihrem privaten Schlüssel entfernen, bevor Sie sie für verwenden können Google Cloud. Sie können den folgenden OpenSSL-Befehl verwenden:

openssl rsa -in PRIVATE_KEY_FILE \
    -out REPLACEMENT_PRIVATE_KEY_FILE

Ersetzen Sie die Platzhalter durch gültige Werte:

  • PRIVATE_KEY_FILE: Der Pfad zu Ihrem privaten Schlüssel, der mit einer Passphrase geschützt ist
  • REPLACEMENT_PRIVATE_KEY_FILE: Der Pfad, in dem Sie eine Kopie Ihres privaten Klartextschlüssels speichern möchten

Ablaufende Zwischenzertifikate

Wenn ein Zwischenzertifikat vor dem (untergeordneten) Serverzertifikat abläuft, könnte dies darauf hindeuten, dass Ihre Zertifizierungsstelle die Best Practices nicht befolgt.

Wenn ein Zwischenzertifikat abläuft, wird Ihr untergeordnetes Zertifikat, das in Google Cloud verwendet wird, möglicherweise ungültig. Dies hängt folgendermaßen vom SSL-Client ab:

  • Einige SSL-Clients betrachten nur die Ablaufzeit des untergeordneten Zertifikats und ignorieren abgelaufene Zwischenzertifikate.
  • Einige SSL-Clients behandeln eine Kette mit abgelaufenen Zwischenzertifikaten als ungültig und zeigen eine Warnung an.

So beheben Sie das Problem:

  1. Warten Sie, bis die Zertifizierungsstelle zu einem neuen Zwischenzertifikat gewechselt hat.
  2. Fordern Sie ein neues Zertifikat an.
  3. Laden Sie das neue Zertifikat mit den neuen Schlüsseln noch einmal hoch.

Ihre Zertifizierungsstelle lässt möglicherweise auch Quersignaturen für Zwischenzertifikate zu. Wenden Sie sich zur Bestätigung an Ihre Zertifizierungsstelle.

Der öffentliche RSA-Exponent ist zu groß

Die folgende Fehlermeldung wird angezeigt, wenn der öffentliche RSA-Exponent größer ist als Achten Sie darauf, 65537 gemäß RFC 4871 zu verwenden.

ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
 -   The RSA public exponent is too large.

SSL-Zertifikat vom Zielproxy entfernen

In den folgenden Schritten wird gezeigt, wie Sie ein einzelnes SSL-Zertifikat entfernen, das mit dem Ziel-HTTPS-Proxy verknüpft ist:

  1. Exportieren Sie den target-https-proxy in eine temporäre Datei.

    gcloud compute target-https-proxies export TARGET_PROXY_NAME > /tmp/proxy
    
  2. Bearbeiten Sie die Datei /tmp/proxy und entfernen Sie die folgenden Zeilen:

    sslCertificates:
    -   https://www.googleapis.com/compute/v1/projects/...
    
  3. Importieren Sie die Datei /tmp/proxy.

    gcloud compute target-https-proxies import TARGET_PROXY_NAME \
       --source=/tmp/proxy
    
  4. Optional: Löschen Sie das SSL-Zertifikat.

    gcloud compute ssl-certificates delete SSL_CERT_NAME
    

Ersetzen Sie Folgendes:

  • TARGET_PROXY_NAME ist der Name des HTTPS-Ziel-Proxys.
  • SSL_CERT_NAME ist der Name des SSL-Zertifikats.