In dieser Anleitung erfahren Sie, wie Sie mit Certificate Manager ein globales, von Google verwaltetes Zertifikat mit DNS-Autorisierung für einen regionenübergreifenden internen Application Load Balancer bereitstellen.
Wenn Sie die Bereitstellung für globale externe Load Balancer oder regionale Load Balancer vornehmen möchten, lesen Sie die folgenden Abschnitte:
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 gilt nur für einen einzelnen Domainnamen. 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 Platzhalterzertifikat 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
Sie können zwei Arten von DNS-Autorisierungen erstellen: FIXED_RECORD
oder PER_PROJECT_RECORD
. Weitere Informationen finden Sie unter DNS-Autorisierung.
DNS-Autorisierung mit FIXED_RECORD
Verwenden Sie den folgenden Befehl gcloud certificate-manager dns-authorizations create
, um eine FIXED_RECORD
-DNS-Autorisierung zu erstellen:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" \ --type=[FIXED_RECORD]
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
.
Nachdem Sie die DNS-Autorisierung FIXED_RECORD
erstellt haben, können Sie sie mit dem gcloud certificate-manager dns-authorizations describe
-Befehl prüfen:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
Die entsprechende Ausgabe sieht etwa so aus: Suchen Sie in der Ausgabe nach dem Abschnitt dnsResourceRecord
. Suchen Sie den CNAME
-Eintrag und fügen Sie die Details des Eintrags (data
, name
und type
) zu Ihrer DNS-Konfiguration hinzu.
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'
DNS-Autorisierung PER_PROJECT_RECORD
Verwenden Sie den folgenden Befehl gcloud certificate-manager dns-authorizations create
, um eine PER_PROJECT_RECORD
-DNS-Autorisierung zu erstellen:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" \ --type=PER_PROJECT_RECORD
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
.
Nachdem Sie die DNS-Autorisierung PER_PROJECT_RECORD
erstellt haben, prüfen Sie sie mit dem Befehl gcloud 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 dem Abschnitt dnsResourceRecord
. Suchen Sie den CNAME
-Eintrag und fügen Sie die Details des Eintrags (data
, name
und type
) zu Ihrer DNS-Konfiguration hinzu.
createTime: '2022-01-14T13:35:00.258409106Z' dnsResourceRecord: data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. name: _acme-challenge_ujmmovf2vn55tgye.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
: die 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
Führen Sie die folgenden Schritte aus, um ein von Google verwaltetes Zertifikat zu erstellen, das auf die in den vorherigen Schritten erstellte DNS-Autorisierung verweist:
Console
Rufen Sie in der Google Cloud Console die Seite Certificate Manager auf.
Klicken Sie auf dem Tab Zertifikate auf Zertifikat hinzufügen.
Geben Sie im Feld Zertifikatname einen eindeutigen Namen für das Zertifikat ein.
Optional: Geben Sie im Feld Beschreibung eine Beschreibung für das Zertifikat ein. Anhand der Beschreibung können Sie das Zertifikat identifizieren.
Wählen Sie unter Standort die Option Global aus.
Wählen Sie unter Umfang die Option Alle Regionen aus.
Wählen Sie für Zertifikatstyp die Option Von Google verwaltetes Zertifikat erstellen aus.
Wählen Sie für Zertifizierungsstellentyp die Option Öffentlich aus.
Geben Sie im Feld Domain Names (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
.Wählen Sie unter Autorisierungstyp die Option DNS-Autorisierung aus.
Auf der Seite werden DNS-Autorisierungen der Domainnamen aufgeführt. Wenn für einen Domainnamen keine DNS-Autorisierung vorhanden ist, gehen Sie so vor, um eine zu erstellen:
- Klicken Sie auf Create missing DNS authorization (Fehlende DNS-Autorisierung erstellen).
- Geben Sie im Feld Name der DNS-Autorisierung den Namen der DNS-Autorisierung an.
Der standardmäßige DNS-Autorisierungstyp ist
FIXED_RECORD
. Wenn Sie Zertifikate in mehreren Projekten unabhängig voneinander verwalten möchten, klicken Sie das Kästchen Autorisierung pro Projekt an. - Klicken Sie auf DNS-Autorisierung erstellen.
Geben Sie im Feld Labels Labels an, die dem Zertifikat zugewiesen 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.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
: der Name des Zertifikats.DOMAIN_NAME
: der Name der Zieldomain. Der Domainname muss ein voll qualifizierter Domainname sein, z. B.myorg.example.com
, oder eine Platzhalterdomain, z. B.*.myorg.example.com
. Das Präfix mit Sternchen und Punkt (*.) kennzeichnet ein Platzhalterzertifikat.AUTHORIZATION_NAMES
: eine durch Kommas getrennte Liste der Namen der DNS-Autorisierungen.
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"], "dnsAuthorizations": [ "projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME", ], "scope": "ALL_REGIONS" } }
Ersetzen Sie Folgendes:
PROJECT_ID
: die ID des Google Cloud Projekts.CERTIFICATE_NAME
: der Name des Zertifikats.DOMAIN_NAME
: der Name der Zieldomain. Der Domainname muss ein voll qualifizierter Domainname sein, z. B.myorg.example.com
, oder eine Platzhalterdomain, z. B.*.myorg.example.com
. Das Präfix „*.“ kennzeichnet ein Platzhalterzertifikat.AUTHORIZATION_NAMES
: eine durch Kommas getrennte Liste der Namen der DNS-Autorisierungen.
CNAME-Eintrag zu DNS-Konfiguration hinzufügen
Wenn Sie eine Drittanbieter-DNS-Lösung zum Verwalten Ihrer DNS-Einträge verwenden, lesen Sie in der zugehörigen Dokumentation nach, wie Sie den CNAME-Eintrag der DNS-Konfiguration hinzufügen. Wenn SieGoogle Cloud zum Verwalten Ihrer DNS-Einträge verwenden, führen Sie die Schritte in diesem Abschnitt aus.
Console
So erstellen Sie einen Datensatz:
Rufen Sie in der Google Cloud Console die Seite DNS-Zonen auf.
Klicken Sie auf den Namen der DNS-Zone, der Sie den Eintrag hinzufügen möchten.
Klicken Sie auf der Seite Zonendetails auf Standard hinzufügen.
Geben Sie auf der Seite Eintrag erstellen im Feld DNS-Name die Subdomain der DNS-Zone ein.
Achten Sie beim Eingeben des Subdomainnamens darauf, dass der Subdomainname einschließlich des ausgegrauten Texts, der im Feld DNS-Name angezeigt wird, mit dem vollständigen Wert des Felds
dnsResourceRecord.name
übereinstimmt, wie er in der Ausgabe des Befehlsgcloud certificate-manager dns-authorizations describe
angezeigt wird.Betrachten Sie die folgenden Beispiele:
Wenn der Feldwert
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 Feldwert
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.
lautet, geben Sie_acme-challenge_ujmmovf2vn55tgye
ein.
Wählen Sie im Feld Ressourceneintragstyp die Option CNAME aus.
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.
Wählen Sie in der Liste TTL-Einheit die Zeiteinheit aus, z. B.
30 minutes
.Geben Sie in das Feld Kanonischer Name den vollständigen Wert des Felds
dnsResourceRecord.data
ein, wie er in der Ausgabe des Befehlsgcloud certificate-manager dns-authorizations describe
angezeigt wird.Wenn Sie zusätzliche Informationen eingeben möchten, klicken Sie auf Element hinzufügen.
Klicken Sie auf Erstellen.
gcloud
Wenn Sie eine DNS-Autorisierung erstellen, gibt der gcloud CLI-Befehl den entsprechenden CNAME-Eintrag zurück. So fügen Sie den CNAME-Eintrag Ihrer DNS-Konfiguration in der DNS-Zone der Zieldomain hinzu:
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.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 demgcloud 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.
Weitere Informationen zum Unterschied zwischen
FIXED_RECORD
- undPER_PROJECT_RECORD
-DNS-Autorisierungen finden Sie in den folgenden Beispielen. Der einzige Unterschied zwischen den beiden Beispielen ist der Wert des Flags--name
.DNS-Autorisierung mit FIXED_RECORD
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"
DNS-Autorisierung PER_PROJECT_RECORD
gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \ --name="_acme-challenge_ujmmovf2vn55tgye.myorg.example.com." \ --ttl="30" \ --type="CNAME" \ --zone="myorg-example-com"
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
Wenn Sie den CNAME-Eintrag Ihrer DNS-Konfiguration hinzufügen möchten, können Sie eine google_dns_record_set
-Ressource verwenden.
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
Rufen Sie in der Google Cloud Console die Seite Certificate Manager auf.
Sehen Sie sich auf dem Tab Zertifikate die Spalte Status für das Zertifikat an.
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 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 korrekt in Ihre DNS-Konfiguration eingefügt haben.
Weitere Schritte zur Fehlerbehebung finden Sie unter Fehlerbehebung für Certificate Manager.
Zertifikat für einen 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 an einen neuen oder vorhandenen Zielproxy anhängen.
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
: 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 Zielproxys den folgenden Befehl aus, um ihn zu prüfen:
gcloud compute target-https-proxies list
Bereinigen
Löschen Sie die in dieser Anleitung verwendeten Ressourcen, um zu vermeiden, dass Ihrem Google Cloud Konto dafür Gebühren berechnet werden.
Löschen Sie den Load-Balancer und die zugehörigen Ressourcen.
Löschen Sie das von Google verwaltete Zertifikat:
Console
Rufen Sie in der Google Cloud Console die Seite Certificate Manager auf.
Klicken Sie auf dem Tab Zertifikate das Kästchen des Zertifikats an.
Klicken Sie auf Löschen.
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.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.