Utilizzo dei certificati SSL gestiti da Google

In questa pagina viene spiegato come creare e utilizzare i certificati SSL gestiti da Google.

I certificati SSL gestiti da Google sono certificati di convalida del dominio (DV) che Google Cloud ottiene e gestisce per i tuoi domini. Supportano più nomi host ogni certificato e Google rinnova i certificati automaticamente.

I certificati gestiti da Google sono supportati con i seguenti bilanciatori del carico:

  • Bilanciatore del carico HTTP(S) esterno globale
  • Bilanciatore del carico HTTP(S) esterno globale (versione classica)
  • Bilanciatore del carico del proxy SSL

I certificati SSL gestiti da Google non sono supportati per i bilanciatori del carico HTTP(S) esterni a livello di area geografica e i bilanciatori del carico HTTP(S) interni. Per questi bilanciatori del carico, utilizza i certificati SSL autogestiti.

Con Google Kubernetes Engine puoi anche utilizzare i certificati SSL gestiti. Per ulteriori informazioni, consulta Utilizzo dei certificati SSL gestiti da Google.

Puoi creare un certificato gestito da Google prima, durante o dopo la creazione del bilanciatore del carico. Questa pagina presuppone che tu stia creando il certificato prima o dopo la creazione del bilanciatore del carico, non durante. Per creare il certificato durante la creazione del bilanciatore del carico, consulta le pagine di istruzioni del bilanciatore del carico.

Domini multipli

Sono supportati più nomi alternativi degli oggetti. Ciascun certificato SSL gestito da Google supporta fino al numero massimo di domini per certificato SSL gestito da Google.

Se hai superato il numero massimo di domini, devi richiedere più certificati gestiti da Google. Ad esempio, se tenti di creare un certificato gestito da Google con (il massimo + 1) di domini, Google non emette alcun certificato. Devi creare invece due o più certificati gestiti da Google e indicare esplicitamente i domini associati a ogni certificato.

Google Cloud implementa la Server Name Indication (SNI), come definita in RFC 6066.

Se uno dei domini o dei sottodomini di un certificato gestito non rimanda all'indirizzo IP del bilanciatore del carico, il processo di rinnovo non andrà a buon fine. Per evitare il rinnovo non riuscito, assicurati che tutti i domini e i sottodomini rimandino all'indirizzo IP del bilanciatore del carico.

Prima di iniziare

Autorizzazioni

Per seguire questa guida, devi essere in grado di creare e modificare i certificati SSL nel tuo progetto. Puoi farlo se si verifica una delle seguenti condizioni:

  • Sei un proprietario o un editor del progetto (roles/owner o roles/editor).
  • Nel progetto sono presenti sia il ruolo Amministratore sicurezza di Compute (compute.securityAdmin) sia il ruolo Amministratore rete Compute (compute.networkAdmin).
  • Hai un ruolo personalizzato per il progetto che include le autorizzazioni compute.sslCertificates.* e una o entrambe le seguenti opzioni: compute.targetHttpsProxies.* e compute.targetSslProxies.*, a seconda del tipo di bilanciatore del carico che stai utilizzando.

Passaggio 1: Creare un certificato SSL gestito da Google

Puoi creare un certificato gestito da Google prima, durante o dopo la creazione del bilanciatore del carico. Durante la procedura di creazione di un bilanciatore del carico in Google Cloud Console, puoi utilizzare Google Cloud Console per creare il certificato. In alternativa, puoi creare il certificato prima o dopo la creazione del bilanciatore del carico. Questo passaggio mostra come creare un certificato che puoi aggiungere in un secondo momento a uno o più bilanciatori del carico.

Se hai già creato il certificato SSL gestito da Google, puoi ignorare questo passaggio.

console

Puoi utilizzare i certificati SSL globali nella scheda Certificati della pagina Bilanciamento del carico.

  1. Vai alla scheda Certificati in Google Cloud Console.
    Vai alla scheda Certificati
  2. Fai clic su Crea certificato SSL.
  3. Inserisci un nome e una descrizione facoltativa per il certificato.
  4. Seleziona Crea certificato gestito da Google.
  5. Aggiungi i domini.
  6. Fai clic su Crea.

gcloud

Per creare un certificato SSL globale gestito da Google per un bilanciatore del carico HTTP(S) esterno globale o un bilanciatore del carico del proxy SSL, utilizza il comando gcloud compute ssl-certificates create:

gcloud compute ssl-certificates create CERTIFICATE_NAME \
    --description=DESCRIPTION \
    --domains=DOMAIN_LIST \
    --global

Sostituisci i seguenti segnaposto con valori validi:

  • CERTIFICATE_NAME: un nome per il certificato SSL globale
  • DESCRIPTION: una descrizione per il certificato SSL globale
  • DOMAIN_LIST: un singolo nome di dominio o un elenco di nomi di dominio delimitati da virgole da utilizzare per questo certificato

api

Crea il metodo della risorsa di certificato gestito da Google sslCertificates.insert sostituendo PROJECT_ID con l'ID progetto.

POST https://compute.googleapis.com/compute/v1/projects/[PROJECT_ID]/global/sslCertificates
{
  "name": "ssl-certificate-name",
  "managed": {
    "domains": [
      "www.example.com"
    ]
  },
  "type": "MANAGED"
}

Controllare lo stato dei certificati SSL gestiti da Google

console

Puoi controllare lo stato dei certificati SSL globali nella scheda Certificati nella pagina Bilanciamento del carico.

  1. Vai alla pagina Certificati in Google Cloud Console.
    Vai alla pagina Certificati
  2. (Facoltativo) Filtra l'elenco dei certificati SSL.
  3. Controlla la colonna Stato.
  4. Per visualizzare ulteriori dettagli, fai clic sul nome del certificato.

gcloud

Per determinare lo stato del certificato gestito da Google, puoi utilizzare i comandi gcloud compute. Dopo aver eseguito il comando appropriato, tieni presente quanto segue:

  • Lo stato gestito.
  • Lo stato del dominio.

Per elencare i certificati SSL gestiti da Google, utilizza il comando gcloud compute ssl-certificates list con il flag --global .

gcloud compute ssl-certificates list \
   --global

Puoi utilizzare il comando gcloud compute ssl-certificates describe, sostituendo CERTIFICATE_NAME:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
   --global \
   --format="get(name,managed.status, managed.domainStatus)"

A questo punto, lo stato del certificato e del dominio è PROVISIONING. Dopo aver completato i passaggi descritti in questa pagina, lo stato cambia in ACTIVE.

Per ulteriori informazioni sugli stati, consulta la pagina per la risoluzione dei problemi.

Passaggio 2: crea o aggiorna il bilanciatore del carico

Per diventare ACTIVE, il certificato SSL gestito da Google deve essere associato a un bilanciatore del carico, in particolare al proxy di destinazione del bilanciatore del carico.

Dopo aver creato il certificato SSL e il suo stato in PROVISIONING, puoi utilizzarlo durante la creazione del bilanciatore del carico, come descritto nelle seguenti guide illustrative:

In alternativa, puoi utilizzarlo per aggiornare un bilanciatore del carico esistente, come descritto qui:

console

Quando aggiorni un bilanciatore del carico HTTP(S) esterno globale o un bilanciatore del carico proxy SSL utilizzando Google Cloud Console, Google Cloud associa automaticamente il certificato SSL al proxy di destinazione corretto.

  1. Vai alla pagina Bilanciamento del carico in Google Cloud Console.
    Vai alla pagina Bilanciamento del carico
  2. Fai clic sul nome del bilanciatore del carico.
  3. Fai clic su Modifica .
  4. Fai clic su Configurazione frontend.
  5. Fai clic sul front-end corretto (HTTPS, HTTP/2, SSL).
  6. Fai clic su Certificati aggiuntivi e seleziona il tuo certificato gestito da Google dall'elenco a discesa.
  7. Fai clic su Crea.

gcloud

Per associare un certificato SSL al proxy HTTPS di destinazione per un bilanciatore del carico HTTP(S) esterno globale, utilizza il comando gcloud compute target-https-proxies update con i flag --global-ssl-certificates e --global:

gcloud compute target-https-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST \
    --global-ssl-certificates \
    --global

Per associare un certificato SSL al proxy SSL di destinazione per un bilanciatore del carico del proxy SSL, utilizza il comando gcloud compute target-ssl-proxies update:

gcloud compute target-ssl-proxies update TARGET_PROXY_NAME \
    --ssl-certificates SSL_CERTIFICATE_LIST

Sostituisci i segnaposto con valori validi:

  • TARGET_PROXY_NAME: nome del proxy di destinazione del bilanciatore del carico
  • SSL_CERTIFICATE_LIST: un elenco di risorse del certificato SSL delimitati da virgole create con il comando gcloud compute ssl-certificates create.

Ogni proxy HTTPS di destinazione o proxy SSL di destinazione deve fare riferimento ad almeno un certificato SSL. Un proxy di destinazione può fare riferimento a più certificati SSL. Per informazioni dettagliate, consulta Pool di destinazione e proxy di destinazione nelle quote e nei limiti delle risorse per il bilanciamento del carico.

Passaggio 3: verifica l'associazione del proxy di destinazione

Dopo aver creato o aggiornato il bilanciatore del carico, puoi assicurarti che il certificato SSL sia associato al proxy di destinazione del bilanciatore del carico.

Se non conosci ancora il nome del proxy di destinazione, utilizza i comandi gcloud compute target-https-proxies list e gcloud compute target-ssl-proxies list per elencare i proxy di destinazione nel progetto.

Verifica l'associazione tra il certificato SSL e il proxy di destinazione eseguendo il comando seguente.

Per i bilanciatori del carico HTTP(S) esterni globali:

gcloud compute target-https-proxies describe TARGET_HTTPS_PROXY_NAME \
    --global \
    --format="get(sslCertificates)"

Per i bilanciatori del carico del proxy SSL:

gcloud compute target-ssl-proxies describe TARGET_SSL_PROXY_NAME \
    --format="get(sslCertificates)"

A questo punto, lo stato del certificato gestito da Google potrebbe essere PROVISIONING. Google Cloud collabora con l'autorità di certificazione per emettere il certificato. Il provisioning di un certificato gestito da Google può richiedere fino a 60 minuti.

Passaggio 4: aggiorna i record DNS A e AAAA in modo che rimandino all'indirizzo IP del bilanciatore del carico

I tuoi record DNS potrebbero essere gestiti presso il sito, l'host DNS o l'ISP del registrar. Se i tuoi record DNS sono gestiti, assicurati di aggiungere o aggiornare i record DNS A (per IPv4) e DNS AAAA (per IPv6) per i tuoi domini e gli eventuali sottodomini.

Assicurati che i record rimandino all'indirizzo IP associato alla regola di forwarding o alle regole di inoltro del bilanciatore del carico utilizzando un record A/AAAA.

Se utilizzi Cloud DNS e Google Domains, configura i tuoi domini e aggiorna i tuoi server dei nomi.

Se hai più domini in un certificato gestito da Google, aggiungi o aggiorna i record DNS per tutti i domini e i sottodomini. Tutti devono puntare all'indirizzo IP del bilanciatore del carico.

Il provisioning dei certificati gestiti può essere eseguito correttamente se si verifica quanto segue:

  • I record DNS del tuo dominio utilizzano un record CNAME che punta a un altro dominio.
  • L'altro dominio contiene un record A o AAAA che punta al tuo indirizzo IP del bilanciatore del carico.

Puoi verificare la configurazione eseguendo il comando dig. Ad esempio, supponiamo che il tuo dominio sia www.example.com. Esegui questo comando dig:

dig www.example.com
; <<>> DiG 9.10.6 <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id:
;; flags: ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL:

;; PSEUDOSECTION:
; EDNS: version: 0, flags:; udp:
;; SECTION:
;www.example.com.

;; SECTION:
www.example.com.   example.net.
example.net.       34.95.64.10

;; time:
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 16:54:44
;;  rcvd: 31748 qr rd 1 OPT 512 QUESTION IN A ANSWER 1742 IN CNAME 12 IN A Query 43 msec Wed Jun 03 PDT 2020 MSG SIZE 193>

In questo esempio, 34.95.64.10 è l'indirizzo IP del tuo bilanciatore del carico.

I resolver DNS su Internet non sono controllabili da Google Cloud. Memorizzano nella cache i set di record di risorse in base alla propria durata (TTL), il che significa che un comando dig o nslookup potrebbe restituire un valore memorizzato nella cache. Se utilizzi Cloud DNS, consulta la sezione Propagazione delle modifiche.

Tempo di propagazione

La propagazione completa dei record DNS A e AAAA appena aggiornati può richiedere molto tempo. A volte la propagazione su Internet richiede fino a 72 ore in tutto il mondo, sebbene in genere siano necessarie alcune ore.

Esegui nuovamente il comando seguente:

gcloud compute ssl-certificates describe CERTIFICATE_NAME \
    --format="get(managed.domainStatus)"

Se lo stato del tuo dominio è FAILED_NOT_VISIBLE, è possibile che la propagazione non sia completata.

Per informazioni dettagliate, consulta la sezione relativa allo stato del dominio del certificato SSL gestito da Google nella pagina relativa alla risoluzione dei problemi.

Passaggio 5: prova con OpenSSL

Dopo che gli stati dei certificati e del dominio sono attivi, possono essere necessari fino a 30 minuti prima che il bilanciatore del carico inizi a utilizzare il certificato SSL gestito da Google.

Per testare il funzionamento, esegui il comando OpenSSL seguente, sostituendo DOMAIN con il tuo nome DNS e IP_ADDRESS con l'indirizzo IP del tuo bilanciatore del carico.

echo | openssl s_client -showcerts -servername DOMAIN -connect IP_ADDRESS:443 -verify 99 -verify_return_error

Questo comando genera i certificati che il bilanciatore del carico presenta al client. Oltre ad altre informazioni dettagliate, l'output dovrebbe includere la catena di certificati e Verify return code: 0 (ok).

Rinnovo del certificato SSL gestito da Google

Google Cloud esegue il provisioning dei certificati gestiti validi per 90 giorni. Circa un mese prima della scadenza, viene avviato automaticamente il processo di rinnovo del certificato. Per questo motivo, viene scelta un'autorità di certificazione (CA) sia nel record DNS dell'autorità di certificazione (CAA) del tuo dominio sia nell'elenco delle autorità di certificazione.

La CA utilizzata per il rinnovo potrebbe essere diversa dalla CA utilizzata per emettere una versione precedente del certificato gestito da Google. Puoi controllare la CA utilizzata da Google Cloud per il rinnovo assicurandoti che il record CAA DNS del dominio specifichi una singola CA dall'elenco di CA utilizzate dai certificati gestiti da Google.

Se uno dei domini o dei sottodomini di un certificato gestito non rimanda all'indirizzo IP del bilanciatore del carico, il processo di rinnovo non andrà a buon fine. Per evitare il rinnovo non riuscito, assicurati che tutti i domini e i sottodomini rimandino all'indirizzo IP del bilanciatore del carico.

Specificare le CA che possono emettere il certificato gestito da Google

Nel software DNS, ti consigliamo di autorizzare esplicitamente le autorità di certificazione che vuoi autorizzare a rilasciare il certificato gestito da Google. Sebbene non sia obbligatorio in tutti gli scenari, è necessario in determinate situazioni.

Ad esempio, se utilizzi un servizio DNS esterno e il certificato gestito da Google viene revocato, il servizio potrebbe convalidare solo un nuovo certificato emesso da una o più CA specifiche.

A tale scopo, crea o modifica un record CAA per includere pki.goog, letsencrypt.org o entrambi. Se non disponi di un record CAA, il comportamento predefinito consente sia pki.goog che letsencrypt.org.

DOMAIN. CAA 0 issue "pki.goog"
DOMAIN. CAA 0 issue "letsencrypt.org"

Per i certificati letsencrypt.org viene offerta la migliore soluzione possibile. Per una maggiore affidabilità, consenti sia pki.goog sia letsencrypt.org. Se specifichi solo una delle CA, verrà utilizzata solo questa CA per creare e rinnovare il tuo certificato. Questo approccio non è consigliato.

Quando crei il certificato, Google Cloud seleziona pki.goog o letsencrypt.org e lo utilizza per emettere il certificato. Quando Google rinnova il certificato, questo può essere emesso dall'altra CA, a seconda delle CA specificate nel record CAA (se ne hai creata una). Il tuo certificato potrebbe essere rinnovato da un'autorità di certificazione diversa in uno dei seguenti casi:

  • Non disponi di un record CAA DNS per il tuo dominio.
  • Hai incluso entrambe le CA nel record CAA DNS.

Per ulteriori informazioni, consulta il RFC, il record DNS CAA.

letsencrypt.org presenta problemi relativi ai nomi di dominio internazionalizzati (IDN). pki.goog non supporta attualmente gli IDN.

Se utilizzi Cloud DNS, scopri come aggiungere un record e assicurati di impostare il flag --type su CAA.

Procedure facoltative

Questa sezione contiene le procedure facoltative per la gestione dei certificati.

Sostituzione di un certificato SSL esistente

Per sostituire un certificato SSL esistente:

  1. Avvia la procedura per la creazione del certificato SSL gestito da Google sostitutivo. Al momento questo certificato non diventa ATTIVO.

  2. Aggiorna il proxy di destinazione in modo che l'elenco dei certificati di riferimento includa il certificato SSL sostitutivo insieme ai certificati SSL correnti. I passaggi per aggiornare il proxy di destinazione variano in questo modo:

  3. Attendi che il certificato SSL sostitutivo completi il provisioning. Il provisioning può richiedere fino a 60 minuti. Una volta completato il provisioning, lo stato del certificato diventa ACTIVE.

  4. Attendi altri 30 minuti per assicurarti che il certificato di sostituzione sia disponibile per tutti i front-end di Google (GFE).

  5. Aggiorna il proxy di destinazione per rimuovere il certificato SSL che stai sostituendo dall'elenco di certificati indicati. I passaggi per aggiornare un proxy di destinazione variano nel seguente modo:

  6. Attendi 10 minuti e verifica che il bilanciatore del carico utilizzi il certificato SSL sostitutivo invece di quello precedente.

  7. Aggiorna di nuovo il proxy di destinazione, rimuovendo la risorsa del certificato SSL precedente. Puoi eliminare la risorsa certificato SSL se non è più presente come riferimento da qualsiasi proxy di destinazione.

Se non elimini il vecchio certificato SSL, questo rimarrà ATTIVO fino alla sua scadenza.

Migrazione da certificati SSL autogestiti a certificati SSL gestiti da Google

Quando esegui la migrazione di un bilanciatore del carico dall'utilizzo di certificati SSL autogestiti ai certificati SSL gestiti da Google, devi eseguire i seguenti passaggi in questa sequenza:

  1. Crea un nuovo certificato gestito da Google.
  2. Associa il nuovo certificato gestito da Google al proxy di destinazione corretto mantenendo l'associazione del proxy di destinazione al certificato autogestito esistente.
  3. Attendi che lo stato del certificato gestito da Google sia ACTIVE.
  4. Attendi 30 minuti per consentire la propagazione del nuovo certificato alla pubblicazione di front-end di Google (GFE)
  5. Aggiorna di nuovo il proxy di destinazione, rimuovendo la risorsa di certificato autogestita. Puoi eliminare la risorsa certificato SSL autogestito se non è più presente in qualsiasi proxy di destinazione.

Eliminazione dei certificati SSL in corso...

Prima di eliminare un certificato SSL, assicurati che nessun proxy HTTPS o SSL faccia riferimento a questo certificato. A tale scopo, puoi procedere in uno dei due seguenti modi:

Per eliminare uno o più certificati SSL:

console

Puoi eliminare i certificati SSL globali nella scheda Certificati della pagina Bilanciamento del carico.

  1. Vai alla pagina Certificati in Google Cloud Console.
    Vai alla pagina Certificati
  2. Seleziona il certificato SSL che vuoi eliminare.
  3. Fai clic su Elimina.
  4. Per confermare, fai di nuovo clic su Elimina.

gcloud

Per eliminare un certificato SSL globale (per i bilanciatori del carico HTTP(S) esterni globali o i bilanciatori del carico del proxy SSL, utilizza il comando gcloud compute ssl-certificates delete con il comando --global:

gcloud compute ssl-certificates delete CERTIFICATE_NAME \
    --global

Sostituisci i segnaposto con valori validi:

  • CERTIFICATE_NAME: il nome del certificato SSL

Passaggi successivi