Questo tutorial mostra come utilizzare Certificate Manager per eseguire il deployment di un certificato globale gestito da Google con autorizzazione DNS.
I seguenti bilanciatori del carico globali supportano i certificati gestiti da Google con autorizzazione DNS:
- Bilanciatore del carico delle applicazioni esterno globale
- Bilanciatore del carico delle applicazioni classico
- Bilanciatore del carico di rete proxy esterno globale
Se vuoi eseguire il deployment su bilanciatori del carico interregionali o regionali, consulta quanto segue:
Crea un certificato gestito da Google con autorizzazione DNS
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
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 con caratteri jolly, ad esempio *.myorg.example.com
, configura l'autorizzazione DNS per il dominio principale, ad esempio myorg.example.com
.
Console
Puoi creare un'autorizzazione DNS o allegarne una esistente quando crei un certificato. Per saperne di più, vedi Crea un certificato gestito da Google che fa riferimento all'autorizzazione DNS.
gcloud
Puoi creare due tipi di autorizzazioni DNS: FIXED_RECORD
o PER_PROJECT_RECORD
. Per ulteriori
informazioni, vedi Autorizzazione DNS.
Autorizzazione DNS FIXED_RECORD
Per creare un'autorizzazione DNS FIXED_RECORD
, utilizza il seguente comando gcloud certificate-manager dns-authorizations create
:
gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \ --domain="DOMAIN_NAME" \ --type=[FIXED_RECORD]
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
.
Dopo aver creato l'autorizzazione DNS FIXED_RECORD
, verificala con il
comando gcloud certificate-manager dns-authorizations describe
:
gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME
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 configurazione DNS.
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'
Autorizzazione DNS PER_PROJECT_RECORD
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" \ --type=PER_PROJECT_RECORD
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
.
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
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 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'
Terraform
Per creare un'autorizzazione DNS, puoi utilizzare una
risorsa google_certificate_manager_dns_authorization
.
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
API
Per creare un'autorizzazione DNS, invia una richiesta POST
al metodo dnsAuthorizations.create
:
POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME" { "domain": "DOMAIN_NAME", "type": "PER_PROJECT_RECORD" //optional }
Sostituisci quanto segue:
PROJECT_ID
: l'ID del Google Cloud progetto.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, procedi nel seguente modo:
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 per il certificato. La descrizione ti consente di identificare il certificato.
Per Località, seleziona Globale.
In Ambito, seleziona Predefinito.
In Tipo di certificato, seleziona Crea certificato gestito da Google.
In Tipo di autorità di certificazione, seleziona Pubblica.
Nel campo Nomi di dominio, specifica un elenco di nomi di dominio del certificato separati da virgole. 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.
Il tipo di autorizzazione DNS predefinito è
FIXED_RECORD
. Per gestire i certificati in modo indipendente in più progetti, seleziona la casella di controllo Autorizzazione per progetto. - 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 globale con autorizzazione DNS, esegui
il comando certificate-manager certificates create
con il flag
dns-authorizations
:
gcloud certificate-manager certificates create CERTIFICATE_NAME \ --domains="DOMAIN_NAME,*.DOMAIN_NAME" \ --dns-authorizations="AUTHORIZATION_NAMES"
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 con asterisco(*.)
indica un certificato jolly.AUTHORIZATION_NAMES
: un elenco separato da virgole dei nomi delle autorizzazioni DNS che hai creato per il certificato.
Terraform
Utilizza una risorsa google_certificate_manager_certificate
.
API
Crea il certificato inviando una richiesta POST
al
metodo certificates.create
come segue:
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", ], } }
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.AUTHORIZATION_NAMES
: un elenco delimitato 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 insieme di record:
Nella console Google Cloud , vai alla pagina Zone DNS.
Fai clic sul nome della zona DNS in cui vuoi aggiungere il record.
Nella pagina Dettagli zona, fai clic su Aggiungi standard.
Nella pagina Crea set di record, inserisci il sottodominio della zona DNS nel campo Nome 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.name
visualizzato 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 in grigio 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 in grigio 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 della risorsa, 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.data
visualizzato 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_NAME
con 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 Creare 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_RECORD
ePER_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_NAME
con 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
Sostituisci CERTIFICATE_NAME
con il nome del certificato
gestito da Google di destinazione.
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/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'
Se lo stato del certificato non è ACTIVE
dopo diverse ore, verifica 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 in un bilanciatore del carico
Per eseguire il deployment di un certificato globale gestito da Google, esegui il deployment del certificato utilizzando una mappa dei certificati.
Crea una mappa di certificati
Crea una mappa di certificati che faccia riferimento alla voce mappa di certificati associata al tuo certificato:
gcloud
Per creare una mappa di certificati, utilizza il comando gcloud certificate-manager maps create
:
gcloud certificate-manager maps create CERTIFICATE_MAP_NAME
Sostituisci CERTIFICATE_MAP_NAME
con il nome della mappa dei certificati
di destinazione.
Terraform
Per creare una mappa dei certificati, puoi utilizzare una
risorsa google_certificate_manager_certificate_map
.
Crea una voce mappa di certificati
Crea una voce mappa di certificati e associala al certificato e alla mappa di certificati:
gcloud
Per creare una voce della mappa dei certificati, utilizza il comando gcloud certificate-manager maps entries create
:
gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME" \ --certificates="CERTIFICATE_NAME" \ --hostname="HOSTNAME"
Sostituisci quanto segue:
CERTIFICATE_MAP_ENTRY_NAME
: il nome della voce della mappa dei certificati.CERTIFICATE_MAP_NAME
: il nome della mappa di certificati a cui è collegata la voce della mappa di certificati.CERTIFICATE_NAME
: il nome del certificato che vuoi associare alla voce della mappa dei certificati.HOSTNAME
: il nome host che vuoi associare alla voce della mappa dei certificati.Se vuoi creare un certificato che copra sia un dominio con caratteri jolly sia un dominio principale, specifica il nome host con un dominio principale e un carattere jolly, ad esempio
example.com
e*.example.com
. Inoltre, devi specificare due voci della mappa dei certificati: una perexample.com
e l'altra per*.example.com
.
Terraform
Per creare una voce della mappa dei certificati con un dominio principale, utilizza una
risorsa google_certificate_manager_certificate_map_entry
.
Per creare una voce della mappa dei certificati con un dominio jolly, utilizza una
risorsa google_certificate_manager_certificate_map_entry
.
Verifica che la voce della mappa dei certificati sia attiva
Verifica che la voce della mappa dei certificati sia attiva prima di collegare la mappa dei certificati corrispondente al proxy di destinazione.
Per verificare la voce della mappa dei certificati, utilizza il comando gcloud certificate-manager maps entries describe
:
gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
Sostituisci quanto segue:
CERTIFICATE_MAP_ENTRY_NAME
: il nome della voce della mappa dei certificati.CERTIFICATE_NAME
: il nome del certificato che vuoi associare alla voce della mappa dei certificati.
L'output è simile al seguente:
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'
Collega la mappa dei certificati al proxy di destinazione
Puoi collegare la mappa dei certificati a un nuovo proxy di destinazione o a uno esistente.
gcloud
Per collegare la mappa dei certificati a un nuovo proxy di destinazione, utilizza il comando gcloud compute target-https-proxies create
:
gcloud compute target-https-proxies create PROXY_NAME \ --certificate-map="CERTIFICATE_MAP_NAME" \ --url-map="URL_MAP" \ --global
Sostituisci quanto segue:
PROXY_NAME
: il nome del proxy di destinazione.CERTIFICATE_MAP_NAME
: il nome della mappa di certificati che fa riferimento alla voce della mappa di certificati e al certificato associato.URL_MAP
: il nome della mappa URL
Per collegare la mappa dei certificati 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 \ --certificate-map="CERTIFICATE_MAP_NAME" \ --global
Dopo aver creato o aggiornato il proxy di destinazione, esegui questo comando per verificarlo:
gcloud compute target-https-proxies list
Terraform
Per collegare la mappa dei certificati al proxy di destinazione, puoi utilizzare una
risorsa google_compute_target_https_proxy
.
Quando configuri un proxy di destinazione, se colleghi i certificati TLS (SSL) direttamente e anche tramite una mappa dei certificati, il proxy utilizza i certificati a cui fa riferimento la mappa dei certificati e ignora i certificati TLS (SSL) collegati direttamente.
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 Pulizia della configurazione di un bilanciatore del carico.
Elimina o scollega la mappatura dei certificati dal proxy.
Per eliminare la mappa dei certificati, esegui questo comando:
gcloud compute target-https-proxies delete PROXY_NAME
Se vuoi conservare il proxy HTTPS di destinazione, scollega la mappa dei certificati dal proxy.
- Se al proxy sono collegati direttamente certificati TLS (SSL), il distacco della mappa dei certificati fa sì che il proxy riprenda a utilizzare questi certificati TLS (SSL) collegati direttamente.
- Se non sono collegati certificati TLS (SSL) direttamente al proxy, la mappa dei certificati non può essere scollegata dal proxy. Prima di poter scollegare la mappa dei certificati, devi collegare almeno un certificato TLS (SSL) direttamente al proxy.
Per scollegare la mappa dei certificati, esegui questo comando:
gcloud compute target-https-proxies update PROXY_NAME \ --clear-certificate-map
Sostituisci
PROXY_NAME
con il nome del proxy di destinazione.Elimina la voce della mappa di certificati dalla mappa di certificati:
gcloud certificate-manager maps entries delete CERTIFICATE_MAP_ENTRY_NAME \ --map="CERTIFICATE_MAP_NAME"
Sostituisci quanto segue:
CERTIFICATE_MAP_ENTRY_NAME
: il nome della voce della mappa dei certificati.CERTIFICATE_MAP_NAME
: il nome della mappa dei certificati.
Elimina la mappa dei certificati:
gcloud certificate-manager maps delete CERTIFICATE_MAP_NAME
Sostituisci
CERTIFICATE_MAP_NAME
con il nome della mappa dei certificati.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
Sostituisci
CERTIFICATE_NAME
con il nome del certificato di destinazione.Elimina l'autorizzazione DNS:
gcloud certificate-manager dns-authorizations delete AUTHORIZATION_NAME
Sostituisci
AUTHORIZATION_NAME
con il nome dell'autorizzazione DNS.