Von Google verwaltetes Zertifikat mit DNS-Autorisierung bereitstellen


In dieser Anleitung erfahren Sie, wie Sie mit Certificate Manager ein globales von Google verwaltetes Zertifikat mit DNS-Autorisierung auf einem regionsübergreifenden internen Application Load Balancer bereitstellen.

Wenn Sie die Bereitstellung auf globalen externen Load Balancern oder regionalen Load Balancern vornehmen möchten, lesen Sie die folgenden Artikel:

Lernziele

In diesem Anleitung werden die folgenden Aufgaben erläutert:

  • Erstellen Sie mit Certificate Manager ein von einer öffentlich vertrauenswürdigen Zertifizierungsstelle ausgestelltes von Google verwaltetes Zertifikat mit DNS-Autorisierung.
  • Bereitstellen des Zertifikats auf einem unterstützten Load Balancer mit einem HTTPS-Zielproxy

Hinweis

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Certificate Manager APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

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

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Compute Engine, Certificate Manager APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Öffentliche DNS-Zone erstellen

Erforderliche Rollen

Sie benötigen die folgenden Rollen, um die Aufgaben in dieser Anleitung ausführen zu können:

  • Zertifikatmanager-Inhaber (roles/certificatemanager.owner)

    Erforderlich zum Erstellen und Verwalten von Certificate Manager-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.

  • DNS-Administrator (roles/dns.admin)

    Erforderlich, wenn Sie Cloud DNS als DNS-Lösung verwenden möchten.

Hier finden Sie weitere Informationen:

Domainnamen

Wenn Sie Zertifikate erstellen möchten, müssen Sie die voll qualifizierten Domainnamen (FQDNs) der Domains abrufen, deren Inhaber Sie sind. Wenn Sie noch keine Domain haben, können Sie mit Cloud Domains eine Domain registrieren.

Load-Balancer erstellen

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

Wenn Sie noch keinen regionenübergreifenden internen Application Load Balancer erstellt haben, lesen Sie den Hilfeartikel Regionenübergreifenden internen Application Load Balancer mit Back-Ends von VM-Instanzgruppen einrichten.

Von Google verwaltetes Zertifikat mit DNS-Autorisierung erstellen

Bevor Sie das Zertifikat erstellen, müssen Sie eine öffentliche DNS-Zone erstellen. Erstellen Sie dann eine DNS-Autorisierung und fügen Sie den CNAME-Eintrag der Ziel-DNS-Zone hinzu.

DNS-Autorisierung erstellen

Eine DNS-Autorisierung deckt nur einen einzelnen Domainnamen ab. Sie müssen für jeden Domainnamen, den Sie mit dem Zielzertifikat verwenden möchten, eine separate DNS-Autorisierung erstellen.

Wenn Sie eine DNS-Autorisierung für ein Wildcard-Zertifikat wie *.myorg.example.com erstellen, konfigurieren Sie die DNS-Autorisierung für die übergeordnete Domain, z. B. myorg.example.com.

Console

Sie können beim Erstellen eines Zertifikats eine DNS-Autorisierung erstellen oder eine vorhandene DNS-Autorisierung anhängen. Weitere Informationen finden Sie unter Ein von Google verwaltetes Zertifikat erstellen, das auf die DNS-Autorisierung verweist.

gcloud

Verwenden Sie den Befehl certificate-manager dns-authorizations create, um eine DNS-Autorisierung zu erstellen:

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME"

Ersetzen Sie Folgendes:

  • AUTHORIZATION_NAME: der Name der DNS-Autorisierung.
  • DOMAIN_NAME: der Name der Zieldomain, für die Sie diese DNS-Autorisierung erstellen. Der Domainname muss ein voll qualifizierter Domainname sein, z. B. myorg.example.com.

Für globale von Google verwaltete Zertifikate wird FIXED_RECORD als Standardtyp für die DNS-Autorisierung verwendet. Führen Sie den folgenden Befehl aus, um die PER_PROJECT_RECORD-DNS-Autorisierung zu verwenden:

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --type="PER_PROJECT_RECORD"

Prüfen Sie die DNS-Autorisierung mit dem Befehl certificate-manager dns-authorizations describe:

gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME \

Die entsprechende Ausgabe sieht etwa so aus: Suchen Sie in der Ausgabe nach der Zeile dnsResourceRecord und rufen Sie den CNAME-Eintrag (data, name und type) ab, um ihn Ihrer DNS-Konfiguration hinzuzufügen.

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
  data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog.
  name: _acme-challenge.myorg.example.com.
  type: CNAME
domain: myorg.example.com
name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

API

Senden Sie zum Erstellen einer DNS-Autorisierung eine POST-Anfrage an die Methode dnsAuthorizations.create:

POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME"
{
  "domain": "DOMAIN_NAME",
  "type": "PER_PROJECT_RECORD" //optional
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: ID des Google Cloud-Projekts.
  • AUTHORIZATION_NAME: der Name der DNS-Autorisierung.
  • DOMAIN_NAME: der Name der Zieldomain, für die Sie diese DNS-Autorisierung erstellen. Der Domainname muss ein voll qualifizierter Domainname sein, z. B. myorg.example.com.

Ein von Google verwaltetes Zertifikat erstellen, das auf die DNS-Autorisierung verweist

So erstellen Sie ein von Google verwaltetes Zertifikat, das auf die in den vorherigen Schritten erstellte DNS-Autorisierung verweist:

Console

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

    Zum Zertifikatmanager

  2. Klicken Sie auf dem Tab Zertifikate auf 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 unter Umfang die Option Alle Regionen aus.

  7. Wählen Sie unter Zertifikattyp die Option Von Google verwaltetes Zertifikat erstellen aus.

  8. Wählen Sie für Zertifizierungsstellentyp die Option Öffentlich aus.

  9. Geben Sie im Feld Domainnamen eine durch Kommas getrennte Liste der Domainnamen des Zertifikats an. Jeder Domainname muss ein voll qualifizierter Domainname sein, z. B. myorg.example.com. Der Domainname kann auch ein Platzhalter-Domainname sein, z. B. *.example.com.

  10. Wählen Sie unter Autorisierungstyp die Option DNS-Autorisierung aus.

    Auf der Seite werden DNS-Autorisierungen der Domainnamen aufgeführt. Wenn einem Domainnamen keine DNS-Autorisierung zugewiesen ist, gehen Sie so vor, um eine zu erstellen:

    1. Klicken Sie auf Fehlende DNS-Autorisierung erstellen.
    2. Geben Sie im Feld Name der DNS-Autorisierung den Namen der DNS-Autorisierung an. Der Standardtyp der DNS-Autorisierung ist FIXED_RECORD. Wenn Sie die projektspezifische DNS-Autorisierung verwenden möchten, klicken Sie das Kästchen Projektspezifische Autorisierung an.
    3. Klicken Sie auf DNS-Autorisierung erstellen.
  11. 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.

  12. Klicken Sie auf Erstellen.

    Das neue Zertifikat wird in der Liste der Zertifikate angezeigt.

gcloud

Verwenden Sie zum Erstellen eines regionsübergreifenden von Google verwalteten Zertifikats mit DNS-Autorisierung den Befehl certificate-manager certificates create mit den Flags dns-authorizations und --scope:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAME, *.DOMAIN_NAME" \
    --dns-authorizations="AUTHORIZATION_NAMES" \
    --scope=all-regions

Ersetzen Sie Folgendes:

  • CERTIFICATE_NAME ist der Name des Zertifikats.
  • DOMAIN_NAME: der Name der Zieldomain. Der Domainname muss ein voll qualifizierter Domainname wie myorg.example.com oder eine Platzhalterdomain wie *.myorg.example.com sein. Das Präfix „Sternchen Punkt“ (*.) steht für ein Platzhalterzertifikat.
  • AUTHORIZATION_NAMES: eine durch Kommas getrennte Liste der Namen der DNS-Autorisierungen.

API

So erstellen Sie das Zertifikat:POSTcertificates.create

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

Ersetzen Sie Folgendes:

  • PROJECT_ID: ID des Google Cloud-Projekts.
  • CERTIFICATE_NAME ist der Name des Zertifikats.
  • DOMAIN_NAME: der Name der Zieldomain. Der Domainname muss ein voll qualifizierter Domainname wie myorg.example.com oder eine Platzhalterdomain wie *.myorg.example.com sein. Das Präfix „Sternchen Punkt“ (*.) steht für ein Platzhalterzertifikat.
  • AUTHORIZATION_NAMES: eine durch Kommas getrennte Liste der Namen der DNS-Autorisierungen.

CNAME-Eintrag zu DNS-Konfiguration hinzufügen

Wenn Sie eine DNS-Lösung eines Drittanbieters zur Verwaltung Ihres DNS verwenden, lesen Sie die zugehörige Dokumentation, um den CNAME-Eintrag der DNS-Konfiguration hinzuzufügen. Wenn SieGoogle Cloud zum Verwalten Ihres DNS verwenden, führen Sie die Schritte in diesem Abschnitt aus.

Console

So erstellen Sie einen Datensatz:

  1. Rufen Sie in der Google Cloud Console die Seite DNS-Zonen auf.

    Cloud DNS-Zonen aufrufen

  2. Klicken Sie auf den Namen der DNS-Zone, der Sie den Eintrag hinzufügen möchten.

  3. Klicken Sie auf der Seite Zonendetails auf Standard hinzufügen.

  4. Geben Sie auf der Seite Eintrag erstellen im Feld DNS-Name die Subdomain der DNS-Zone ein.

    Achten Sie beim Eingeben des Subdomain-Namens darauf, dass der Subdomain-Name, einschließlich des ausgegrauten Texts im Feld DNS-Name, mit dem vollständigen Wert des Felds dnsResourceRecord.name übereinstimmt, wie er in der Ausgabe des Befehls gcloud certificate-manager dns-authorizations describe angezeigt wird.

    Betrachten Sie die folgenden Beispiele:

    • Wenn der Wert des Felds dnsResourceRecord.name _acme-challenge.myorg.example.com. ist und der ausgegraute Text im Feld DNS-Name .example.com. lautet, geben Sie _acme-challenge.myorg ein.

    • Wenn der Wert des Felds dnsResourceRecord.name _acme-challenge.myorg.example.com. ist und der ausgegraute Text im Feld DNS-Name .myorg.example.com. lautet, geben Sie _acme-challenge ein.

    • Wenn der Wert des Felds dnsResourceRecord.name _acme-challenge_ujmmovf2vn55tgye.myorg.example.com. ist und der ausgegraute Text im Feld DNS-Name .myorg.example.com. ist, geben Sie _acme-challenge_ujmmovf2vn55tgye ein.

  5. Wählen Sie im Feld Ressourceneintragstyp die Option CNAME aus.

  6. Geben Sie im Feld TTL einen positiven numerischen Wert für die Gültigkeitsdauer des Ressourceneintrags ein, also den Zeitraum, den er im Cache gespeichert werden kann.

  7. Wählen Sie in der Liste TTL-Einheit die Zeiteinheit aus, z. B. 30 minutes.

  8. Geben Sie in das Feld Kanonischer Name den vollständigen Wert des Felds dnsResourceRecord.data ein, wie er in der Ausgabe des Befehls gcloud certificate-manager dns-authorizations describe angezeigt wird.

  9. Wenn Sie zusätzliche Informationen eingeben möchten, klicken Sie auf Element hinzufügen.

  10. Klicken Sie auf Erstellen.

gcloud

Wenn Sie eine DNS-Autorisierung erstellen, gibt der gcloud-Befehl den entsprechenden CNAME-Eintrag zurück. So fügen Sie den CNAME-Eintrag Ihrer DNS-Konfiguration in der DNS-Zone der Zieldomain hinzu:

  1. Starten Sie die Transaktion des DNS-Eintrags:

    gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
    

    Ersetzen Sie DNS_ZONE_NAME durch den Namen der Ziel-DNS-Zone.

  2. Fügen Sie den CNAME-Eintrag zur Ziel-DNS-Zone hinzu:

    gcloud dns record-sets transaction add CNAME_RECORD \
        --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \
        --ttl="30" \
        --type="CNAME" \
        --zone="DNS_ZONE_NAME"
    

    Ersetzen Sie Folgendes:

    • CNAME_RECORD: Der vollständige Datenwert des CNAME-Eintrags, der vom Google Cloud CLI-Befehl zurückgegeben wurde, mit dem die entsprechende DNS-Autorisierung erstellt wurde.
    • VALIDATION_SUBDOMAIN_NAME: die Präfix-Subdomain der DNS-Zone, z. B. _acme-challenge. Sie können den Namen aus dem gcloud certificate-manager dns-authorizations describe-Befehlsprotokoll kopieren, wie unter DNS-Autorisierung erstellen beschrieben.
    • DOMAIN_NAME: Der Name der Zieldomain. Der Domainname muss ein voll qualifizierter Domainname sein, z. B. myorg.example.com. Sie dürfen den Punkt am Ende nach dem Zieldomainnamen nicht weglassen.
    • DNS_ZONE_NAME: der Name der Ziel-DNS-Zone.

    Sehen Sie sich folgendes Beispiel an:

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \
        --name="_acme-challenge.myorg.example.com." \
        --ttl="30" \
        --type="CNAME" \
        --zone="myorg-example-com"
    
  3. Führen Sie die Transaktion des DNS-Eintrags aus, um die Änderungen zu speichern:

    gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
    

    Ersetzen Sie DNS_ZONE_NAME durch den Namen der Ziel-DNS-Zone.

Terraform

Sie können eine google_dns_record_set-Ressource verwenden, um den CNAME-Eintrag Ihrer DNS-Konfiguration hinzuzufügen.

resource "google_dns_record_set" "cname" {
  name         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].name
  managed_zone = google_dns_managed_zone.default.name
  type         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].type
  ttl          = 300
  rrdatas      = [google_certificate_manager_dns_authorization.default.dns_resource_record[0].data]
}

Status des Zertifikats prüfen

Prüfen Sie vor der Bereitstellung eines Zertifikats auf einem Load Balancer, ob es aktiv ist. Es kann einige Minuten dauern, bis sich der Zertifikatstatus in ACTIVE ändert.

Console

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

    Zum Zertifikatmanager

  2. Prüfen Sie auf dem Tab Zertifikate in der Spalte Status den Status des Zertifikats.

gcloud

Führen Sie den folgenden Befehl aus, um den Status des Zertifikats zu prüfen:

gcloud certificate-manager certificates describe CERTIFICATE_NAME

Ersetzen Sie CERTIFICATE_NAME durch den Namen des Zielzertifikats, das von Google verwaltet wird.

Die Ausgabe sieht in etwa so aus:

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  - domain: myorg.example.com
    state: AUTHORIZED
  dnsAuthorizations:
    - projects/myProject/locations/global/dnsAuthorizations/myCert
  domains:
  - myorg.example.com
  state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
  -   myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

Wenn der Zertifikatsstatus nach mehreren Stunden nicht ACTIVE ist, prüfen Sie, ob Sie den CNAME-Eintrag Ihrer DNS-Konfiguration korrekt hinzugefügt haben.

Weitere Schritte zur Fehlerbehebung finden Sie unter Fehlerbehebung bei Certificate Manager.

Zertifikat auf einem Load Balancer bereitstellen

Wenn Sie das globale von Google verwaltete Zertifikat bereitstellen möchten, hängen Sie es direkt an den Zielproxy an.

Zertifikat direkt an den Zielproxy anhängen

Sie können das Zertifikat einem neuen oder einem vorhandenen Zielproxy zuweisen.

Verwenden Sie den Befehl gcloud compute target-https-proxies create, um das Zertifikat an einen neuen Zielproxy anzuhängen:

gcloud compute target-https-proxies create PROXY_NAME \
    --url-map=URL_MAP \
    --certificate-manager-certificates=CERTIFICATE_NAME \
    --global

Ersetzen Sie Folgendes:

  • PROXY_NAME: der Name des Zielproxys.
  • URL_MAP ist der Name der URL-Zuordnung. Sie haben die URL-Zuordnung beim Erstellen des Load Balancers erstellt.
  • CERTIFICATE_NAME ist der Name des Zertifikats.

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

gcloud compute target-https-proxies update PROXY_NAME \
    --global \
    --certificate-manager-certificates=CERTIFICATE_NAME

Führen Sie nach dem Erstellen oder Aktualisieren des Zielproxies den folgenden Befehl aus, um ihn zu überprüfen:

gcloud compute target-https-proxies list

Bereinigen

Löschen Sie die in dieser Anleitung verwendeten Ressourcen, damit Ihrem Google Cloud -Konto keine Kosten in Rechnung gestellt werden.

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

    Load-Balancing-Einrichtung bereinigen.

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

    Console

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

      Zum Zertifikatmanager

    2. Klicken Sie auf dem Tab Zertifikate auf das Kästchen des Zertifikats.

    3. Klicken Sie auf Löschen.

    4. Klicken Sie im angezeigten Dialogfeld zur Bestätigung auf Löschen.

    gcloud

    gcloud certificate-manager certificates delete CERTIFICATE_NAME
    

    Ersetzen Sie CERTIFICATE_NAME durch den Namen des Zielzertifikats.

  3. So löschen Sie die DNS-Autorisierung:

    gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
    

    Ersetzen Sie AUTHORIZATION_NAME durch den Namen der Ziel-DNS-Autorisierung.

Nächste Schritte