Questo tutorial mostra come utilizzare Certificate Manager per eseguire il deployment di un certificato regionale gestito da Google con autorizzazione DNS in un bilanciatore del carico delle applicazioni esterno regionale o in un bilanciatore del carico delle applicazioni interno regionale.
Se vuoi eseguire il deployment su bilanciatori del carico esterni globali o bilanciatori del carico interregionali, consulta quanto segue:
Obiettivi
Questo tutorial mostra come completare le seguenti attività:
- Crea un certificato gestito da Google emesso da un'autorità di certificazione pubblicamente attendibile con autorizzazione DNS utilizzando Certificate Manager. Per creare un certificato gestito da Google a livello di regione, devi utilizzare l'autorizzazione DNS per progetto.
- Esegui il deployment del certificato in un bilanciatore del carico supportato utilizzando un proxy HTTPS di destinazione.
Prima di iniziare
- Accedi al tuo account Google Cloud . Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine, Certificate Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init -
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine, Certificate Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
Installa Google Cloud CLI.
-
Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.
-
Per inizializzare gcloud CLI, esegui questo comando:
gcloud init - Crea una zona DNS pubblica
Ruoli obbligatori
Per completare le attività di questo tutorial, assicurati di disporre dei seguenti ruoli:
Certificate Manager Owner (
roles/certificatemanager.owner)Necessario per creare e gestire le risorse di Certificate Manager.
Amministratore bilanciatore del carico Compute (
roles/compute.loadBalancerAdmin) o Compute Network Admin (roles/compute.networkAdmin)Obbligatorio per creare e gestire il proxy HTTPS di destinazione.
DNS Administrator (
roles/dns.admin)Obbligatorio se vuoi utilizzare Cloud DNS come soluzione DNS.
Per ulteriori informazioni, consulta le seguenti risorse:
- Ruoli e autorizzazioni per Certificate Manager.
- Ruoli e autorizzazioni IAM di Compute Engine per Compute Engine.
- Ruoli e autorizzazioni per Cloud DNS.
Nomi di dominio
Per creare certificati, recupera i nomi di dominio completi (FQDN) dei domini di tua proprietà. Se non hai un dominio, puoi utilizzare Cloud Domains per registrarne uno.
Crea il bilanciatore del carico
Questo tutorial presuppone che tu abbia già creato e configurato i backend, i controlli di integrità, i servizi di backend e le mappe URL del bilanciatore del carico. Prendi nota del nome della mappa degli URL perché ti servirà più avanti in questo tutorial.
Per creare un bilanciatore del carico delle applicazioni esterno regionale, consulta Configura un bilanciatore del carico delle applicazioni esterno regionale con backend di gruppi di istanze VM.
Per creare un bilanciatore del carico delle applicazioni interno regionale, consulta Configura un bilanciatore del carico delle applicazioni interno regionale con backend di gruppi di istanze VM.
Crea un certificato gestito da Google a livello di regione
Prima di creare il certificato, crea una zona DNS pubblica. Poi, crea un'autorizzazione DNS e aggiungi il record CNAME alla zona DNS di destinazione.
Crea un'autorizzazione DNS
Importante: per i certificati gestiti da Google a livello di regione, devi creare un'autorizzazione DNS regionale nella stessa regione del certificato. Non puoi utilizzare le autorizzazioni DNS globali con i certificati regionali.
Un'autorizzazione DNS copre solo un singolo nome di dominio. Devi creare un'autorizzazione DNS separata per ogni nome di dominio che vuoi utilizzare con il certificato di destinazione.
Se stai creando un'autorizzazione DNS per un certificato jolly, ad esempio *.myorg.example.com, configura l'autorizzazione DNS per il dominio principale, ad esempio myorg.example.com.
Per i certificati gestiti da Google a livello di regione, puoi creare solo il tipo di autorizzazione DNS PER_PROJECT_RECORD.
Console
Puoi creare un'autorizzazione DNS o collegarne una esistente quando crei un certificato. Per saperne di più, consulta Creare un certificato gestito da Google che fa riferimento all'autorizzazione DNS.
gcloud
Per creare un'autorizzazione DNS PER_PROJECT_RECORD, utilizza il seguente
comando gcloud certificate-manager dns-authorizations create:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
--domain="DOMAIN_NAME" \
--location="LOCATION"
Sostituisci quanto segue:
AUTHORIZATION_NAME: il nome dell'autorizzazione DNS.DOMAIN_NAME: il nome del dominio di destinazione per cui stai creando questa autorizzazione DNS. Il nome di dominio deve essere un nome di dominio completo, ad esempiomyorg.example.com.LOCATION: la posizione Google Cloud di destinazione in cui crei l'autorizzazione DNS. Devi fornire una località di destinazione specifica, ad esempious-central1.
Dopo aver creato l'autorizzazione DNS PER_PROJECT_RECORD, verificala con il comando gcloud certificate-manager dns-authorizations describe:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME \
--location="LOCATION"
L'output è simile al seguente. Nell'output, individua la sezione dnsResourceRecord. Individua il record CNAME e aggiungi i dettagli del record (data,name e type) alla tua configurazione DNS.
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
Per creare un'autorizzazione DNS, invia una richiesta POST al metodo dnsAuthorizations.create:
POST /v1/projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME
{
"domain": "DOMAIN_NAME",
"type": "PER_PROJECT_RECORD"
}
Sostituisci quanto segue:
PROJECT_ID: l'ID del Google Cloud progetto.LOCATION: la posizione Google Cloud di destinazione in cui crei l'autorizzazione DNS. Devi fornire una località di destinazione specifica, ad esempious-central1.AUTHORIZATION_NAME: il nome dell'autorizzazione DNS.DOMAIN_NAME: il nome del dominio di destinazione per cui stai creando questa autorizzazione DNS. Il nome di dominio deve essere un nome di dominio completo, ad esempiomyorg.example.com.
Crea un certificato gestito da Google che faccia riferimento all'autorizzazione DNS
Per creare un certificato gestito da Google che faccia riferimento all'autorizzazione DNS che hai creato nei passaggi precedenti:
Console
Nella console Google Cloud , vai alla pagina Certificate Manager.
Nella scheda Certificati, fai clic su Aggiungi certificato.
Nel campo Nome certificato, inserisci un nome univoco per il certificato.
(Facoltativo) Nel campo Descrizione, inserisci una descrizione del certificato. La descrizione ti consente di identificare il certificato.
Per Località, seleziona A livello di regione.
Nell'elenco Regione, seleziona la tua regione.
In Tipo di certificato, seleziona Crea un certificato gestito da Google.
Per Tipo di autorità di certificazione, seleziona Pubblica.
Nel campo Nomi di dominio, specifica un elenco separato da virgole di nomi di dominio del certificato. Ogni nome di dominio deve essere un nome di dominio completo, ad esempio
myorg.example.com. Il nome di dominio può anche essere un nome di dominio con caratteri jolly, ad esempio*.example.com.In Tipo di autorizzazione, seleziona Autorizzazione DNS.
La pagina elenca le autorizzazioni DNS dei nomi di dominio. Se un nome di dominio non ha un'autorizzazione DNS associata, segui questi passaggi per crearne una:
- Fai clic su Crea autorizzazione DNS mancante.
- Nel campo Nome autorizzazione DNS, specifica il nome dell'autorizzazione DNS.
- Fai clic su Crea autorizzazione DNS.
Nel campo Etichette, specifica le etichette da associare al certificato. Per aggiungere un'etichetta, fai clic su Aggiungi etichetta e specifica una chiave e un valore per l'etichetta.
Fai clic su Crea.
Il nuovo certificato viene visualizzato nell'elenco dei certificati.
gcloud
Per creare un certificato gestito da Google a livello di regione con autorizzazione DNS, esegui
il comando certificate-manager certificates create con i flag
dns-authorizations e location:
gcloud certificate-manager certificates create CERTIFICATE_NAME \
--domains="DOMAIN_NAME, *.DOMAIN_NAME" \
--dns-authorizations="AUTHORIZATION_NAMES" \
--location=LOCATION
Sostituisci quanto segue:
CERTIFICATE_NAME: il nome del certificato.DOMAIN_NAME: il nome del dominio di destinazione. Il nome di dominio deve essere un nome di dominio completo, ad esempiomyorg.example.com, o un dominio con caratteri jolly, ad esempio*.myorg.example.com. Il prefisso asterisco punto (*.) indica un certificato jolly.AUTHORIZATION_NAMES: un elenco separato da virgole dei nomi delle autorizzazioni DNS.LOCATION: la posizione di destinazione Google Cloud .
API
Crea il certificato inviando una richiesta POST al
metodo certificates.create come segue:
POST /v1/projects/PROJECT_ID/locations/LOCATION/certificates?certificate_id=CERTIFICATE_NAME
{
"managed": {
"domains": ["DOMAIN_NAME"],
"dnsAuthorizations": [
"projects/PROJECT_ID/locations/LOCATION/dnsAuthorizations/AUTHORIZATION_NAME",
],
}
}
Sostituisci quanto segue:
PROJECT_ID: l'ID del Google Cloud progetto.CERTIFICATE_NAME: il nome del certificato.DOMAIN_NAME: il nome del dominio di destinazione. Il nome di dominio deve essere un nome di dominio completo, ad esempiomyorg.example.com, o un dominio con caratteri jolly, ad esempio*.myorg.example.com. Il prefisso asterisco punto (*.) indica un certificato jolly.LOCATION: la posizione di destinazione Google Cloud .AUTHORIZATION_NAMES: un elenco separato da virgole dei nomi delle autorizzazioni DNS.
Aggiungere il record CNAME alla configurazione DNS
Se utilizzi una soluzione DNS di terze parti per gestire il DNS, consulta la relativa documentazione per aggiungere il record CNAME alla configurazione DNS. Se utilizzi Google Cloud per gestire il DNS, completa i passaggi descritti in questa sezione.
Console
Per creare un set di record:
Nella console Google Cloud , vai alla pagina Zone DNS.
Fai clic sul nome della zona DNS a cui vuoi aggiungere il record.
Nella pagina Dettagli zona, fai clic su Aggiungi standard.
Nella pagina Crea set di record, nel campo Nome DNS, inserisci il sottodominio della zona DNS.
Quando inserisci il nome del sottodominio, assicurati che il nome del sottodominio, incluso il testo disattivato visualizzato nel campo Nome DNS, corrisponda al valore completo del campo
dnsResourceRecord.namevisualizzato nell'output del comandogcloud certificate-manager dns-authorizations describe.Vedi i seguenti esempi:
Se il valore del campo
dnsResourceRecord.nameè_acme-challenge.myorg.example.com.e il testo disattivato nel campo Nome DNS è.example.com., inserisci_acme-challenge.myorg.Se il valore del campo
dnsResourceRecord.nameè_acme-challenge.myorg.example.com.e il testo disattivato nel campo Nome DNS è.myorg.example.com., inserisci_acme-challenge.Se il valore del campo
dnsResourceRecord.nameè_acme-challenge_ujmmovf2vn55tgye.myorg.example.com.e il testo disattivato nel campo Nome DNS è.myorg.example.com., inserisci_acme-challenge_ujmmovf2vn55tgye.
Nel campo Tipo di record risorsa, seleziona CNAME.
Nel campo TTL, inserisci un valore numerico positivo per la durata del record di risorse, ovvero per quanto tempo può essere memorizzato nella cache.
Nell'elenco Unità TTL, seleziona l'unità di tempo, ad esempio
30 minutes.Nel campo Nome canonico, inserisci il valore completo del campo
dnsResourceRecord.datavisualizzato nell'output del comandogcloud certificate-manager dns-authorizations describe.Per inserire ulteriori informazioni, fai clic su Aggiungi elemento.
Fai clic su Crea.
gcloud
Quando crei un'autorizzazione DNS, il comando gcloud CLI restituisce il record CNAME corrispondente. Per aggiungere il record CNAME alla configurazione DNS nella zona DNS del dominio di destinazione, segui questi passaggi:
Avvia la transazione del record DNS:
gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
Sostituisci
DNS_ZONE_NAMEcon il nome della zona DNS di destinazione.Aggiungi il record CNAME alla zona DNS di destinazione:
gcloud dns record-sets transaction add CNAME_RECORD \ --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \ --ttl="30" \ --type="CNAME" \ --zone="DNS_ZONE_NAME"Sostituisci quanto segue:
CNAME_RECORD: il valore completo dei dati del record CNAME restituito dal comando Google Cloud CLI che ha creato l'autorizzazione DNS corrispondente.VALIDATION_SUBDOMAIN_NAME: il sottodominio del prefisso della zona DNS, ad esempio_acme-challenge. Puoi copiare il nome dal log dei comandigcloud certificate-manager dns-authorizations describe, come descritto in Crea un'autorizzazione DNS.DOMAIN_NAME: il nome del dominio di destinazione.Il nome di dominio deve essere un nome di dominio completo, ad esempiomyorg.example.com. Devi includere anche il punto finale dopo il nome di dominio di destinazione.DNS_ZONE_NAME: il nome della zona DNS di destinazione.
Per saperne di più sulla differenza tra le autorizzazioni DNS
FIXED_RECORDePER_PROJECT_RECORD, consulta i seguenti esempi. L'unica differenza tra i due esempi è il valore del flag--name.Autorizzazione DNS 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"Autorizzazione DNS 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"Esegui la transazione del record DNS per salvare le modifiche:
gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
Sostituisci
DNS_ZONE_NAMEcon il nome della zona DNS di destinazione.
Terraform
Per aggiungere il record CNAME alla configurazione DNS, puoi utilizzare una
risorsa google_dns_record_set.
Verifica lo stato del certificato
Prima di eseguire il deployment di un certificato in un bilanciatore del carico, verifica che sia attivo. Potrebbero essere necessari diversi minuti prima che lo stato del certificato diventi ACTIVE.
Console
Nella console Google Cloud , vai alla pagina Certificate Manager.
Nella scheda Certificati, controlla la colonna Stato del certificato.
gcloud
Per verificare lo stato del certificato, esegui questo comando:
gcloud certificate-manager certificates describe CERTIFICATE_NAME \
--location=LOCATION
Sostituisci quanto segue:
CERTIFICATE_NAME: il nome del certificato.LOCATION: la località Google Cloud di destinazione in cui hai creato il certificato gestito da Google.
L'output è simile al seguente:
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/LOCATION/dnsAuthorizations/myCert
domains:
- myorg.example.com
state: ACTIVE
name: projects/myProject/locations/LOCATION/certificates/myCert
pemCertificate: |
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
sanDnsnames:
- myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'
Se lo stato del certificato non è ACTIVE dopo diverse ore, controlla di aver aggiunto correttamente il record CNAME alla configurazione DNS.
Per ulteriori passaggi per la risoluzione dei problemi, consulta Risolvere i problemi di Certificate Manager.
Esegui il deployment del certificato su un bilanciatore del carico
Per eseguire il deployment del certificato gestito da Google regionale in un bilanciatore del carico delle applicazioni esterno regionale o in un bilanciatore del carico delle applicazioni interno regionale, collegalo direttamente al proxy di destinazione.
Allega il certificato direttamente al proxy di destinazione
Puoi collegare il certificato a un nuovo proxy di destinazione o a uno esistente.
Per collegare il certificato a un nuovo proxy di destinazione, utilizza il comando
gcloud compute
target-https-proxies create:
gcloud compute target-https-proxies create PROXY_NAME \
--certificate-manager-certificates=CERTIFICATE_NAME \
--url-map=URL_MAP \
--region=LOCATION
Sostituisci quanto segue:
PROXY_NAME: il nome del proxy di destinazione.CERTIFICATE_NAME: il nome del certificato.URL_MAP: il nome della mappa URL. Hai creato la mappa URL quando hai creato il bilanciatore del carico.LOCATION: la posizione Google Cloud di destinazione in cui vuoi creare il proxy HTTPS di destinazione.
Per collegare il certificato a un proxy HTTPS di destinazione esistente, utilizza il comando
gcloud
compute target-https-proxies update. Se non
conosci il nome del proxy di destinazione esistente, vai alla pagina Proxy
di destinazione e annota il nome del proxy di destinazione.
gcloud compute target-https-proxies update PROXY_NAME \
--region=LOCATION \
--certificate-manager-certificates=CERTIFICATE_NAME
Dopo aver creato o aggiornato il proxy di destinazione, esegui questo comando per verificarlo:
gcloud compute target-https-proxies list
Esegui la pulizia
Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, eliminale.
Elimina il bilanciatore del carico e le relative risorse.
Vedi Liberare spazio in una configurazione di bilanciamento del carico.
Elimina il certificato gestito da Google:
Console
Nella console Google Cloud , vai alla pagina Certificate Manager.
Nella scheda Certificati, seleziona la casella di controllo del certificato.
Fai clic su Elimina.
Nella finestra di dialogo visualizzata, fai clic su Elimina per confermare.
gcloud
gcloud certificate-manager certificates delete CERTIFICATE_NAME \ --location=LOCATIONSostituisci quanto segue:
CERTIFICATE_NAME: il nome del certificato.LOCATION: la posizione di destinazione Google Cloud .
Elimina l'autorizzazione DNS:
gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME --location=LOCATION
Sostituisci quanto segue:
AUTHORIZATION_NAME: il nome dell'autorizzazione DNS.LOCATION: la posizione Google Cloud di destinazione in cui hai creato l'autorizzazione DNS.