In diesem Dokument wird beschrieben, wie Sie häufige Probleme mit von Google verwalteten und selbstverwalteten SSL-Zertifikaten diagnostizieren und beheben. Gültige SSL-Zertifikate schützen Daten bei der Übertragung und tragen dazu bei, die Dienstverfügbarkeit für Ihre Load-Balancing-Bereitstellungen zu gewährleisten.
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 |
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, bis sie erfolgreich ist oder sich der Status in PROVISIONING_FAILED_PERMANENTLY ändert.
|
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 Status wird die Bereitstellung von Google Cloud nicht wiederholt. Erstellen Sie ein von Google verwaltetes SSL-Ersatzzertifikat und achten Sie darauf, dass das Ersatzzertifikat mit dem Zielproxy Ihres Load Balancers verknüpft ist. Prüfen oder führen Sie alle Schritte unter Von Google verwaltete SSL-Zertifikate verwenden aus. Anschließend können Sie das Zertifikat löschen, dessen Bereitstellung dauerhaft fehlgeschlagen ist. |
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 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:
PROVISIONING lautet, versucht Google Cloud 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 Google Cloud zu verwendende Zertifizierungsstelle angibt. Achten Sie darauf, dass Sie dem richtigen Ablauf gefolgt sind. |
FAILED_RATE_LIMITED |
Die Bereitstellung von Zertifikaten ist fehlgeschlagen, da eine Zertifizierungsstelle ratenbegrenzte Anfragen für Zertifikatsignaturen hat. Sie können ein neues Zertifikat bereitstellen, zur Verwendung des neuen Zertifikats wechseln und das vorherige Zertifikat löschen oder denGoogle Cloud -Support kontaktieren. |
Verlängerung des verwalteten Zertifikats
Damit Ihre Zertifikate den Schritt der Domainvalidierung im Verlängerungsprozess nicht fehlschlagen, sollten Sie die Anforderungen für Ihre DNS-A- und -AAAA-Einträge prüfen.
Domainvalidierung aus mehreren Perspektiven
Google Cloud erneuert Ihre von Google verwalteten Zertifikate regelmäßig, indem es sie von Zertifizierungsstellen (CAs) anfordert. Die Zertifizierungsstellen, mit denenGoogle Cloud zusammenarbeitet, um Ihre Zertifikate zu verlängern, verwenden eine Domainvalidierungsmethode mit mehreren Perspektiven, die als Multi-Perspective Issuance Corroboration (MPIC) bezeichnet wird. Im Rahmen dieses Prozesses überprüfen 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 Überprüfungen werden von mehreren Standorten im Internet aus durchgeführt. Wenn die Validierung fehlschlägt, können von Google verwaltete Zertifikate nicht verlängert werden. Infolgedessen stellt Ihr Load Balancer Clients ein abgelaufenes Zertifikat bereit, was bei Browsernutzern zu Zertifikatsfehlern und bei API-Clients zu Verbindungsfehlern führt.
Beachten Sie Folgendes, um Fehler bei der Domainvalidierung aus mehreren Perspektiven aufgrund falsch konfigurierter DNS-Einträge zu vermeiden:
- Ihre DNS-A-Einträge (IPv4) und DNS-AAAA-Einträge (IPv6) für Ihre Domains und Subdomains verweisen nur auf die IP-Adresse (oder Adressen), die der Weiterleitungsregel (oder den Weiterleitungsregeln) des Load Balancers zugeordnet sind. Wenn der Eintrag andere Adressen enthält, kann die Validierung fehlschlagen.
- Die Zertifizierungsstelle, die die Validierung von DNS-Einträgen durchführt, fragt DNS-Einträge von mehreren Standorten ab. Achten Sie darauf, dass Ihr DNS-Anbieter konsistent auf alle globalen Domainvalidierungsanfragen antwortet.
- Die Verwendung von GeoDNS (Rückgabe unterschiedlicher IP-Adressen basierend auf dem Standort der Anfrage) oder standortbasierten DNS-Richtlinien kann zu inkonsistenten Antworten und zum Fehlschlagen der Validierung führen. Wenn Ihr DNS-Anbieter 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. Zwischenebenen wie ein CDN können zu unvorhersehbarem Verhalten führen. Die IP-Adresse muss direkt zugänglich sein, ohne dass Weiterleitungen, Firewalls oder CDNs im Anfragepfad vorhanden sind. Weitere Informationen finden Sie im Abschnitt Load Balancer hinter einem CDN in diesem Dokument.
- Wir empfehlen, ein Tool zur Überprüfung der globalen DNS-Verbreitung Ihrer Wahl zu verwenden, um zu prüfen, ob alle relevanten DNS-Einträge weltweit korrekt und konsistent aufgelöst werden.
Konfigurationsänderungen prüfen
Nachdem Sie Ihre DNS-Einträge konfiguriert haben, können Sie prüfen, ob sie korrekt sind. Erstellen Sie dazu ein neues Zertifikat und verbinden Sie es zusammen mit dem vorhandenen Zertifikat mit Ihrem Load Balancer. In diesem Schritt wird eine sofortige Prüfung der Zertifikatsbereitstellung bei der Zertifizierungsstelle erzwungen, sodass Sie Ihre Konfigurationsänderungen innerhalb weniger Minuten überprüfen können. Ohne diese können automatische Verlängerungen des vorhandenen Zertifikats Tage oder Wochen dauern, was zu Unsicherheiten bei der Einrichtung führt.
Wenn der Zertifikatsstatus zu ACTIVE wird, bedeutet dies, dass das Zertifikat ausgestellt wurde. Damit wird bestätigt, dass Ihre DNS-Konfiguration korrekt ist. Wir empfehlen, das frühere Zertifikat zu entfernen, damit Sie nicht zwei separate Zertifikate für dieselbe Domain haben. Dieser Vorgang unterbricht den Traffic zu Ihrem Load Balancer nicht.
Das neue Zertifikat dient als Validierungstool. Seine Erstellung bestätigt, dass die Domainvalidierung 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, können einige CDN-Drittanbieter im Anfragepfad verhindern, dass Validierungsanfragen erfolgreich ausgeführt werden. Dies kann passieren, wenn der CDN-Anbieter HTTP(S)-Traffic aktiv weiterleitet.
In solchen Fällen empfehlen wir, Ihre Zertifikate zum Zertifikatmanager zu migrieren und die Methode der DNS-Autorisierung zu verwenden, um von Google verwaltete Zertifikate bereitzustellen. Bei letzterem Ansatz 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 können.
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:
- Wenden Sie sich an Ihre Zertifizierungsstelle, um Hilfe zu erhalten.
- Erstellen Sie einen neuen privaten Schlüssel und ein neues Zertifikat.
Fehlender allgemeiner Name oder Subject Alternative Name
Google Cloud erfordert, dass Ihr Zertifikat entweder ein Attribut für einen gemeinsamen Namen (CN) oder einen alternativen Antragstellernamen (SAN) hat. Weitere Informationen finden Sie unter CSR erstellen.
Wenn beide Attribute fehlen, wird in Google Cloud eine Fehlermeldung wie die folgende angezeigt, wenn Sie versuchen, ein selbstverwaltetes Zertifikat zu 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 KeyExpecting: ANY PRIVATE KEYRSA key error: n does not equal p qRSA key error: d e not congruent to 1RSA key error: dmp1 not congruent to dRSA key error: dmq1 not congruent to dRSA 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 Google Cloudverwenden können. 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 istREPLACEMENT_PRIVATE_KEY_FILE: Der Pfad, in dem Sie eine Kopie Ihres privaten Nur-Text-Schlü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 inGoogle 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:
- Warten Sie, bis die Zertifizierungsstelle zu einem neuen Zwischenzertifikat gewechselt hat.
- Fordern Sie ein neues Zertifikat an.
- 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 Ziel-Proxy entfernen
In den folgenden Schritten wird gezeigt, wie Sie ein einzelnes SSL-Zertifikat entfernen, das mit dem Ziel-HTTPS-Proxy verknüpft ist:
Exportieren Sie den target-https-proxy in eine temporäre Datei.
gcloud compute target-https-proxies export TARGET_PROXY_NAME > /tmp/proxy
Bearbeiten Sie die Datei
/tmp/proxyund entfernen Sie die folgenden Zeilen:sslCertificates: - https://www.googleapis.com/compute/v1/projects/...Importieren Sie die Datei
/tmp/proxy.gcloud compute target-https-proxies import TARGET_PROXY_NAME \ --source=/tmp/proxy
Optional: Löschen Sie das SSL-Zertifikat.
gcloud compute ssl-certificates delete SSL_CERT_NAME
Ersetzen Sie Folgendes:
TARGET_PROXY_NAMEist der Name des HTTPS-Ziel-Proxys.SSL_CERT_NAMEist der Name des SSL-Zertifikats.