Globales selbstverwaltetes Zertifikat bereitstellen

In dieser Anleitung erfahren Sie, wie Sie mit Zertifikatmanager ein globales selbstverwaltetes Zertifikat bereitstellen.

Die folgenden Load-Balancer unterstützen globale selbstverwaltete Zertifikate:

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

Wenn Sie regionale oder regionenübergreifende Load Balancer bereitstellen möchten, lesen Sie die folgenden Informationen:

Ziele

In diesem Anleitung werden die folgenden Aufgaben erläutert:

  • Laden Sie ein selbstverwaltetes Zertifikat in den Zertifikatmanager hoch.
  • Stellen Sie das Zertifikat mit einem HTTPS-Zielproxy auf einem unterstützten Load Balancer bereit.

Hinweis

  1. Melden Sie sich in Ihrem Google Cloud -Konto an. Wenn Sie mit Google Cloudnoch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Certificate Manager APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Compute Engine, Certificate Manager APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init

Erforderliche Rollen

Sie benötigen die folgenden Rollen, um die Aufgaben in dieser Anleitung auszuführen:

  • Zertifikatmanager-Inhaber (roles/certificatemanager.owner)

    Erforderlich zum Erstellen und Verwalten von Zertifikatmanager-Ressourcen.

  • Administrator für Compute-Load-Balancer (roles/compute.loadBalancerAdmin) oder Compute-Netzwerkadministrator (roles/compute.networkAdmin)

    Erforderlich zum Erstellen und Verwalten von HTTPS-Ziel-Proxys.

Hier finden Sie weitere Informationen:

Load Balancer erstellen

In diesem Tutorial wird davon ausgegangen, dass Sie die Backends, Systemdiagnosen, Backend-Dienste und URL-Zuordnungen des Load-Balancers bereits erstellt und konfiguriert haben. Wenn Sie einen externen Application Load Balancer erstellt haben, notieren Sie sich den Namen der URL-Zuordnung, da Sie ihn später in dieser Anleitung benötigen.

Wenn Sie den Load-Balancer noch nicht erstellt haben, finden Sie auf den folgenden Seiten Informationen dazu:

Privaten Schlüssel und Zertifikat erstellen

So erstellen Sie einen privaten Schlüssel und ein Zertifikat:

  1. Verwenden Sie eine vertrauenswürdige Drittanbieter-Zertifizierungsstelle, um das Zertifikat zusammen mit dem zugehörigen Schlüssel auszustellen.

  2. Prüfen Sie, ob das Zertifikat richtig verkettet und als Root-Zertifikat vertrauenswürdig ist.

  3. Bereiten Sie die folgenden PEM-codierten Dateien vor:

    • Die Zertifikatsdatei (CRT)
    • Die entsprechende Datei mit dem privaten Schlüssel (KEY)

Informationen zum Anfordern und Validieren eines Zertifikats finden Sie unter Privaten Schlüssel und Zertifikat erstellen.

Selbstverwaltetes Zertifikat in den Zertifikatmanager hochladen

So laden Sie das Zertifikat in den Zertifikatmanager hoch:

Console

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

    Zum Zertifikatmanager

  2. Klicken Sie auf dem Tab Certificates (Zertifikate) auf Add Certificate (Zertifikat hinzufügen).

  3. Geben Sie im Feld Zertifikatname einen eindeutigen Namen für das Zertifikat ein.

  4. Optional: Geben Sie im Feld Beschreibung eine Beschreibung für das Zertifikat ein. Anhand der Beschreibung können Sie das Zertifikat identifizieren.

  5. Wählen Sie unter Standort die Option Global aus.

  6. Wählen Sie für Bereich die Option Standard aus.

  7. Wählen Sie für Zertifikatstyp die Option Selbstverwaltetes Zertifikat erstellen aus.

  8. Gehen Sie für das Feld Zertifikat so vor:

    • Klicken Sie auf den Button Hochladen und wählen Sie Ihre PEM-formatierte Zertifikatsdatei aus.
    • Kopieren Sie den Inhalt eines PEM-formatierten Zertifikats und fügen Sie ihn ein. Der Inhalt muss mit -----BEGIN CERTIFICATE----- beginnen und mit -----END CERTIFICATE----- enden.
  9. Führen Sie für das Feld Zertifikat für privaten Schlüssel einen der folgenden Schritte aus:

    • Klicken Sie auf Hochladen und wählen Sie Ihren privaten Schlüssel aus. Ihr privater Schlüssel muss im PEM-Format vorliegen und darf nicht durch eine Passphrase geschützt sein.
    • Kopieren Sie den Inhalt des privaten Schlüssels im PEM-Format und fügen Sie ihn ein. Die privaten Schlüssel müssen mit -----BEGIN PRIVATE KEY----- beginnen und mit -----END PRIVATE KEY----- enden.
  10. Geben Sie im Feld Labels die Labels an, die dem Zertifikat zugeordnet werden sollen. Klicken Sie auf Label hinzufügen, um ein Label hinzuzufügen, und geben Sie einen Schlüssel und einen Wert für das Label an.

  11. Klicken Sie auf Erstellen.

    Das neue Zertifikat wird in der Liste der Zertifikate angezeigt.

gcloud

Verwenden Sie zum Erstellen eines globalen selbstverwalteten Zertifikats den Befehl certificate-manager certificates create:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --certificate-file="CERTIFICATE_FILE" \
    --private-key-file="PRIVATE_KEY_FILE"

Ersetzen Sie Folgendes:

  • CERTIFICATE_NAME: Der Name des Zertifikats.
  • CERTIFICATE_FILE: Der Pfad und der Dateiname der CRT-Zertifikatsdatei.
  • PRIVATE_KEY_FILE: Der Pfad und der Dateiname der privaten KEY-Schlüsseldatei.

Terraform

Wenn Sie ein selbstverwaltetes Zertifikat hochladen möchten, können Sie eine google_certificate_manager_certificate-Ressource mit dem self_managed-Block verwenden.

API

Laden Sie das Zertifikat hoch, indem Sie eine POST-Anfrage an die Methode certificates.create stellen:

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME
{
  self_managed: {
    pem_certificate: "PEM_CERTIFICATE",
    pem_private_key: "PEM_KEY",
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: ID Ihres Google Cloud -Projekts.
  • CERTIFICATE_NAME: Der Name des Zertifikats.
  • PEM_CERTIFICATE: Das Zertifikat im PEM-Format.
  • PEM_KEY: der Schlüssel-PEM.

Selbstverwaltetes Zertifikat für einen Load Balancer bereitstellen

Verwenden Sie eine Zertifikatszuordnung, um das globale selbstverwaltete Zertifikat bereitzustellen.

Zertifikatzuordnung erstellen

Erstellen Sie eine Zertifikatszuordnung, die auf den Zertifikatszuordnungseintrag verweist, der mit Ihrem Zertifikat verknüpft ist:

gcloud

Verwenden Sie den Befehl gcloud certificate-manager maps create, um eine Zertifikatzuordnung zu erstellen:

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

Ersetzen Sie CERTIFICATE_MAP_NAME durch den Namen der Zielzertifikatszuordnung.

Terraform

Zum Erstellen einer Zertifikatszuordnung können Sie eine google_certificate_manager_certificate_map-Ressource verwenden.

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

Zertifikatszuordnungseintrag erstellen

Erstellen Sie einen Zertifikatszuordnungseintrag und verknüpfen Sie ihn mit Ihrem Zertifikat und Ihrer Zertifikatszuordnung:

gcloud

Verwenden Sie den Befehl gcloud certificate-manager maps entries create, um einen Zertifikatszuordnungseintrag zu erstellen:

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: Name des Zertifikatszuordnungseintrags.
  • CERTIFICATE_MAP_NAME: Name der Zertifikatszuordnung, mit der der Zertifikatszuordnungseintrag verknüpft ist.
  • CERTIFICATE_NAME: der Name des Zertifikats, das Sie mit dem Zertifikatszuordnungseintrag verknüpfen möchten.
  • HOSTNAME: Der Hostname, den Sie dem Zertifikatszuordnungseintrag zuordnen möchten.

    Wenn Sie ein Zertifikat erstellen möchten, das sowohl eine Platzhalterdomain als auch eine Stammdomain abdeckt, geben Sie den Hostnamen mit einer Stammdomain und einem Platzhalter an, z. B. example.com und *.example.com. Außerdem müssen Sie zwei Einträge für die Zertifikatszuordnung angeben: einen für example.com und einen für *.example.com.

Terraform

Verwenden Sie eine google_certificate_manager_certificate_map_entry-Ressource, um einen Zertifikatszuordnungseintrag mit einer Stammdomain zu erstellen.

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

Wenn Sie einen Zertifikatszuordnungseintrag mit einer Platzhalterdomain erstellen möchten, verwenden Sie eine google_certificate_manager_certificate_map_entry-Ressource.

resource "google_certificate_manager_certificate_map_entry" "second_entry" {
  name        = "${local.name}-second-entity-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = "*.${local.domain}"
}

Prüfen, ob der Zertifikatszuordnungseintrag aktiv ist

Prüfen Sie, ob der Zertifikatszuordnungseintrag aktiv ist, bevor Sie die entsprechende Zertifikatszuordnung an den Ziel-Proxy anhängen.

Verwenden Sie den Befehl gcloud certificate-manager maps entries describe, um den Zertifikatszuordnungseintrag zu prüfen:

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

Ersetzen Sie Folgendes:

  • CERTIFICATE_MAP_ENTRY_NAME: Name des Zertifikatszuordnungseintrags.
  • CERTIFICATE_NAME: der Name des Zertifikats, das Sie mit dem Zertifikatszuordnungseintrag verknüpfen möchten.

Die Ausgabe sieht etwa so aus:

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

Zertifikatszuordnung an den Ziel-Proxy anhängen

Sie können die Zertifikatszuordnung an einen neuen oder vorhandenen Ziel-Proxy anhängen.

gcloud

Verwenden Sie den Befehl gcloud compute target-https-proxies create, um die Zertifikatszuordnung an einen neuen Ziel-Proxy anzuhängen:

gcloud compute target-https-proxies create PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --url-map="URL_MAP" \
    --global

Ersetzen Sie Folgendes:

  • PROXY_NAME: Name des Ziel-Proxys.
  • CERTIFICATE_MAP_NAME: Name der Zertifikatszuordnung, die auf den Zertifikatszuordnungseintrag und das zugehörige Zertifikat verweist.
  • URL_MAP: der Name des URL-Mappings

Verwenden Sie den Befehl gcloud compute target-https-proxies update, um die Zertifikatszuordnung an einen vorhandenen Ziel-HTTPS-Proxy anzuhängen. Wenn Sie den Namen des vorhandenen Ziel-Proxys nicht kennen, rufen Sie die Seite Ziel-Proxys auf und notieren Sie sich den Namen des Ziel-Proxys.

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

Führen Sie nach dem Erstellen oder Aktualisieren des Ziel-Proxys den folgenden Befehl aus, um ihn zu prüfen:

gcloud compute target-https-proxies list

Terraform

Um die Zertifikatszuordnung an den Ziel-Proxy anzuhängen, können Sie eine google_compute_target_https_proxy-Ressource verwenden.

Wenn Sie beim Konfigurieren eines Zielproxys TLS- (SSL-)Zertifikate direkt und auch über eine Zertifikatszuordnung anhängen, verwendet der Proxy die Zertifikate, auf die in der Zertifikatszuordnung verwiesen wird, und ignoriert die direkt angehängten TLS- (SSL-)Zertifikate.

Bereinigen

Löschen Sie die in dieser Anleitung verwendeten Ressourcen, um zu vermeiden, dass Ihrem Google Cloud Konto dafür Gebühren berechnet werden.

  1. Löschen Sie den Load Balancer und seine Ressourcen.

    Load-Balancing-Einrichtung bereinigen.

  2. Löschen Sie die Zertifikatszuordnung oder trennen Sie sie vom Proxy.

    Führen Sie den folgenden Befehl aus, um die Zertifikatszuordnung zu löschen:

    gcloud compute target-https-proxies delete PROXY_NAME
    

    Wenn Sie den HTTPS-Ziel-Proxy behalten möchten, trennen Sie die Zertifikatszuordnung vom Proxy.

    • Wenn dem Proxy TLS-Zertifikate (SSL) direkt zugewiesen sind, werden diese wieder verwendet, wenn die Zertifikatszuordnung getrennt wird.
    • Wenn dem Proxy keine TLS-Zertifikate (SSL) direkt zugeordnet sind, kann die Zertifikatszuordnung nicht vom Proxy getrennt werden. Sie müssen zuerst 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
    

    Ersetzen Sie PROXY_NAME durch den Namen des Ziel-Proxys.

  3. 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: Name des Zertifikatszuordnungseintrags.
    • CERTIFICATE_MAP_NAME: Name der Zertifikatszuordnung.
  4. Löschen Sie die Zertifikatszuordnung:

    gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
    

    Ersetzen Sie CERTIFICATE_MAP_NAME durch den Namen der Zertifikatszuordnung.

  5. Löschen Sie das hochgeladene Zertifikat:

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Ersetzen Sie CERTIFICATE_NAME durch den Namen des Zertifikats.

Nächste Schritte