Globales von Google verwaltetes Zertifikat mit Load-Balancer-Autorisierung bereitstellen


In dieser Anleitung wird der Prozess zur Zertifikatsbereitstellung anhand eines von Google verwalteten Zertifikats mit einer Load-Balancer-Autorisierung als Beispiel beschrieben.

Einen Vergleich der unterstützten Arten der Domainautorisierung finden Sie unter Domainautorisierung.

Die folgenden Load-Balancer unterstützen von Google verwaltete Zertifikate mit Load-Balancer-Autorisierung:

  • Globaler externer Application Load Balancer
  • Klassischer Application Load Balancer
  • Globaler externer Proxy-Network Load Balancer

Wenn Sie ein vorhandenes Zertifikat zum Zertifikatmanager migrieren möchten, führen Sie stattdessen die Schritte unter Zertifikate zum Zertifikatmanager migrieren aus.

Lernziele

In diesem Anleitung werden die folgenden Aufgaben erläutert:

  • Mit dem Zertifikatmanager ein von Google verwaltetes Zertifikat erstellen, das von einer öffentlich vertrauenswürdigen Zertifizierungsstelle mit Load-Balancer-Autorisierung ausgestellt wurde
  • Stellen Sie das Zertifikat mithilfe eines Ziel-HTTPS-Proxys für einen unterstützten Load-Balancer bereit.

Weitere Informationen zum Bereitstellen von Zertifikaten finden Sie unter Bereitstellungsübersicht.

Wenn Sie die Schritte in dieser Anleitung ausführen, um ein Zertifikat für eine Domain bereitzustellen, die bereits Produktionstraffic bereitstellt, müssen Sie beachten, dass der Traffic für diese Domain unterbrochen wird, während das Zertifikat auf dem entsprechenden Load-Balancer bereitgestellt und aktiviert wird.

Hinweise

  1. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  2. Für die Ausführung der Aufgaben in dieser Anleitung benötigen Sie die folgenden Rollen:

    • Inhaber des Zertifikatmanagers: Erforderlich, um Zertifikatsmanager-Ressourcen zu erstellen und zu verwalten.
    • Compute Load Balancer Admin oder Compute Network Admin: Erforderlich zum Erstellen und Verwalten des HTTPS-Zielproxys.
    • DNS-Administrator: Erforderlich, wenn Sie Cloud DNS als DNS-Lösung verwenden möchten.

    Hier finden Sie weitere Informationen:

Von Google verwaltetes Zertifikat mit Load-Balancer-Autorisierung erstellen

Führen Sie die Schritte in diesem Abschnitt aus, um ein von Google verwaltetes Zertifikat mit Load-Balancer-Autorisierung zu erstellen.

Wenn Sie mehrere Domainnamen für das Zertifikat angeben möchten, stellen Sie eine durch Kommas getrennte Liste von Zieldomainnamen für das Zertifikat bereit.

Weitere Informationen finden Sie unter Berechtigungen und Rollen.

gcloud

gcloud certificate-manager certificates create CERTIFICATE_NAME \
--domains="DOMAIN_NAMES"

Ersetzen Sie Folgendes:

  • CERTIFICATE_NAME: Ein eindeutiger Name des Zertifikats.
  • DOMAIN_NAMES: eine durch Kommas getrennte Liste der Zieldomains für dieses Zertifikat. Jeder Domainname muss ein voll qualifizierter Domainname wie myorg.example.com sein.

Terraform

Verwenden Sie eine google_certificate_manager_certificate-Ressource.

resource "google_certificate_manager_certificate" "default" {
  name        = "${local.name}-rootcert-${random_id.tf_prefix.hex}"
  description = "Cert with LB authorization"
  managed {
    domains = [local.domain]
  }
  labels = {
    "terraform" : true
  }
}

Informationen zum Anwenden oder Entfernen einer Terraform-Konfiguration finden Sie unter Grundlegende Terraform-Befehle.

API

Erstellen Sie das Zertifikat. Stellen Sie dazu eine POST-Anfrage an die Methode certificates.create:

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME"
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
 }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID des Google Cloud-Zielprojekts.
  • CERTIFICATE_NAME: ein eindeutiger Name, der dieses Zertifikat beschreibt.
  • DOMAIN_NAME: die Zieldomain für dieses Zertifikat. Der Domainname muss ein voll qualifizierter Domainname sein, z. B. myorg.example.com.

Einen Überblick über den Bereitstellungsprozess von Zertifikaten finden Sie unter Bereitstellungsübersicht.

Zertifikat für einen Load-Balancer bereitstellen

Führen Sie die Schritte in diesem Abschnitt aus, um das von Google verwaltete Zertifikat, das Sie in den vorherigen Schritten erstellt haben, für einen Load-Balancer bereitzustellen.

Zertifikatzuordnung erstellen

Erstellen Sie eine Zertifikatzuordnung, die auf den Eintrag der Zertifikatszuordnung verweist, der mit Ihrem Zertifikat verknüpft ist.

gcloud

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Ersetzen Sie CERTIFICATE_MAP_NAME durch den Namen der Zielzertifikatzuordnung.

Terraform

Verwenden Sie eine google_certificate_manager_certificate_map-Ressource.

resource "google_certificate_manager_certificate_map" "default" {
  name        = "${local.name}-certmap1-${random_id.tf_prefix.hex}"
  description = "${local.domain} certificate map"
  labels = {
    "terraform" : true
  }
}

Eintrag für Zertifikatszuordnung erstellen

Erstellen Sie einen Eintrag für die Zertifikatszuordnung und verknüpfen Sie ihn mit Ihrem Zertifikat sowie Ihrer Zertifikatszuordnung.

gcloud

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAME" \
    --hostname="HOSTNAME"

Ersetzen Sie Folgendes:

  • CERTIFICATE_MAP_ENTRY_NAME: ein eindeutiger Name des Zertifikatszuordnungseintrags
  • CERTIFICATE_MAP_NAME: der Name der Zertifikatszuordnung, an die dieser Zertifikatszuordnungseintrag angehängt wird
  • CERTIFICATE_NAME: der Name des Zertifikats, das Sie mit diesem Zertifikatzuordnungseintrag verknüpfen möchten
  • HOSTNAME: der Hostname, den Sie mit diesem Zertifikatzuordnungseintrag verknüpfen möchten

Terraform

Verwenden Sie eine google_certificate_manager_certificate_map_entry-Ressource.

resource "google_certificate_manager_certificate_map_entry" "default" {
  name        = "${local.name}-first-entry-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.default.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.default.id]
  hostname     = local.domain
}

Prüfen, ob der Eintrag für die Zertifikatszuordnung aktiv ist

Prüfen Sie mit dem folgenden Befehl, ob der Eintrag der Zertifikatszuordnung aktiv ist, bevor Sie die entsprechende Zertifikatszuordnung an den Zielproxy anhängen:

gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME"

Ersetzen Sie Folgendes:

  • CERTIFICATE_MAP_ENTRY_NAME: der Name des Eintrags für die Zielzertifikatzuordnung
  • CERTIFICATE_MAP_NAME: der Name der Zertifikatszuordnung, an die dieser Zertifikatszuordnungseintrag angehängt wird

Die Ausgabe des Befehls sieht in etwa so aus:

createTime: '2021-09-06T10:01:56.229472109Z'
name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry
state: ACTIVE
updateTime: '2021-09-06T10:01:58.277031787Z'

Zertifikatszuordnung an den Zielproxy anhängen

Hängen Sie die konfigurierte Zertifikatszuordnung an den gewünschten Zielproxy an.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Zielproxys auf.

Zu „Zielproxys“

  1. Notieren Sie sich den Namen des Zielproxys.

  2. Hängen Sie die Zertifikatszuordnung an den Zielproxy an:

   gcloud compute target-https-proxies update PROXY_NAME \
       --certificate-map="CERTIFICATE_MAP_NAME"
   

Ersetzen Sie Folgendes:

*   `PROXY_NAME`: the name of the target proxy
*   `CERTIFICATE_MAP_NAME`: the name of the certificate
    map referencing your certificate map entry and its associated
    certificate

Terraform

Verwenden Sie eine google_compute_target_https_proxy-Ressource.

resource "google_compute_target_https_proxy" "default" {
  name            = "test-proxy"
  certificate_map = "//certificatemanager.googleapis.com/${google_certificate_manager_certificate_map.default.id}"
  url_map         = google_compute_url_map.default.id
}

Wenn bereits TLS (SSL)-Zertifikate direkt an den Proxy angehängt sind, bevorzugt der Proxy die Zertifikate, auf die in der Zertifikatszuordnung verwiesen wird, gegenüber den direkt angehängten TLS (SSL)-Zertifikaten.

Warten, bis das Zertifikat aktiviert wurde

Nachdem Sie das Zertifikat an den Zielproxy angehängt haben, kann es mehrere Stunden dauern, bis es ausgestellt wird und sich sein Status in ACTIVE ändert. Sobald der Status ACTIVE lautet, kann es bis zu 30 Minuten dauern, bis der Load-Balancer das Zertifikat verwendet.

Verwenden Sie den folgenden Befehl, um den Status des Zertifikats zu prüfen:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Ersetzen Sie CERTIFICATE_NAME durch den Namen des von Google verwalteten Zielzertifikats.

Die Ausgabe des Befehls sieht in etwa so aus:

certificatePem: myPEM
createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  -   domain: myorg.example.com
    state: AUTHORIZED
  domains:
  -   myorg.example.com
    state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
scope: myScope
sanDnsnames:
  -   myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Wenn sich der Zertifikatstatus nach mehreren Stunden nicht in ACTIVE geändert hat, prüfen Sie Folgendes:

Weitere Schritte zur Fehlerbehebung finden Sie unter Fehlerbehebung bei SSL-Zertifikaten.

Bereinigen

Mit den folgenden Schritten können Sie die in dieser Anleitung vorgenommenen Änderungen rückgängig machen:

  1. Trennen Sie die Zertifikatszuordnung vom Proxy.

    Beachten Sie Folgendes, bevor Sie die Zertifikatszuordnung trennen:

    • Wenn TLS (SSL)-Zertifikate direkt an den Proxy angehängt wurden, führt das Trennen der Zertifikatszuordnung dazu, dass der Proxy wieder die direkt angehängten TLS (SSL)-Zertifikate verwendet.
    • Wenn keine TLS (SSL)-Zertifikate direkt an den Proxy angehängt wurden, kann die Zertifikatszuordnung nicht vom Proxy getrennt werden. Sie müssen mindestens ein TLS-Zertifikat (SSL) direkt an den Proxy anhängen, bevor Sie die Zertifikatszuordnung trennen können.

    Führen Sie den folgenden Befehl aus, um die Zertifikatszuordnung zu trennen:

    gcloud compute target-https-proxies update PROXY_NAME \
       --clear-certificate-map
    
  2. Löschen Sie den Zertifikatszuordnungseintrag aus der Zertifikatszuordnung:

    gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \
      --map="CERTIFICATE_MAP_NAME"
    

    Ersetzen Sie Folgendes:

    • CERTIFICATE_MAP_ENTRY_NAME: der Name des Eintrags für die Zielzertifikatzuordnung
    • CERTIFICATE_MAP_NAME: der Name der Zielzertifikatzuordnung
  3. Löschen Sie die Zertifikatszuordnung:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Ersetzen Sie CERTIFICATE_MAP_NAME durch den Namen der Zielzertifikatzuordnung.

  4. Löschen Sie das von Google verwaltete Zertifikat:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Ersetzen Sie CERTIFICATE_NAME durch den Namen des Zielzertifikats.

Nächste Schritte