Risoluzione dei problemi relativi ai certificati SSL

Questo documento descrive come diagnosticare e risolvere i problemi comuni relativi ai certificati SSL gestiti da Google e autogestiti. I certificati SSL validi proteggono i dati in transito e contribuiscono a garantire la disponibilità del servizio per i deployment di bilanciamento del carico.

Risolvi i problemi relativi ai certificati gestiti da Google

Per i certificati gestiti da Google, esistono due tipi di stato:

  • Stato gestito
  • Stato dominio

Stato gestito

Per controllare lo stato del certificato, esegui questo comando:

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

I valori per lo stato gestito sono i seguenti:

Stato gestito Spiegazione
PROVISIONING

Il certificato gestito da Google è stato creato e Google Cloud sta collaborando con l'autorità di certificazione per la firma.

Il provisioning di un certificato gestito da Google potrebbe richiedere fino a 60 minuti dal momento in cui le modifiche alla configurazione del DNS e del bilanciatore del carico sono state propagate su internet. Se di recente hai aggiornato la configurazione DNS, potrebbe essere necessario molto tempo prima che le modifiche vengano propagate completamente. A volte la propagazione richiede fino a 72 ore in tutto il mondo, anche se in genere richiede alcune ore. Per saperne di più sulla propagazione del DNS, consulta Propagazione delle modifiche.

Se il certificato rimane nello stato PROVISIONING, assicurati che al proxy di destinazione sia associato il certificato corretto. Puoi verificarlo eseguendo il comando gcloud compute target-https-proxies describe o gcloud compute target-ssl-proxies describe.

ACTIVE Il certificato SSL gestito da Google è ottenuto dall'autorità di certificazione. Potrebbero essere necessari altri 30 minuti prima che sia disponibile per l'utilizzo da parte di un bilanciatore del carico.
PROVISIONING_FAILED Potresti visualizzare brevemente PROVISIONING_FAILED anche se il tuo certificato è effettivamente ACTIVE. Controlla di nuovo lo stato.

Se lo stato rimane PROVISIONING_FAILED, il certificato gestito da Google è stato creato, ma l'autorità di certificazione non può firmarlo. Assicurati di aver completato tutti i passaggi descritti in Utilizzo di certificati SSL gestiti da Google.

Google Cloud esegue nuovi tentativi di provisioning fino a quando non viene eseguito correttamente o lo stato non cambia in PROVISIONING_FAILED_PERMANENTLY.
PROVISIONING_FAILED_PERMANENTLY Il certificato gestito da Google è stato creato, ma l'autorità di certificazione non può firmarlo a causa di un problema con la configurazione DNS o del bilanciatore del carico. In questo stato, Google Cloud non riprova il provisioning.

Crea un certificato SSL sostitutivo gestito da Google e assicurati che sia associato al proxy di destinazione del bilanciatore del carico. Verifica o completa tutti i passaggi descritti in Utilizzo dei certificati SSL gestiti da Google. In seguito, puoi eliminare il certificato per cui il provisioning non è andato a buon fine in modo permanente.
RENEWAL_FAILED

Il rinnovo del certificato gestito da Google non è riuscito a causa di un problema con la configurazione DNS o del bilanciatore del carico. Se uno dei domini o dei sottodomini in un certificato gestito non punta all'indirizzo IP del bilanciatore del carico utilizzando un record A/record AAAA, il processo di rinnovo non va a buon fine. Il certificato esistente continua a essere pubblicato, ma scade a breve. Controlla la configurazione.

Se lo stato rimane RENEWAL_FAILED, esegui il provisioning di un nuovo certificato, passa all'utilizzo del nuovo certificato ed elimina il certificato precedente.

Per saperne di più sul rinnovo dei certificati, consulta Rinnovo dei certificati SSL gestiti da Google.

Stato dominio

Per controllare lo stato del dominio, esegui questo comando:

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

I valori per lo stato del dominio sono descritti in questa tabella.

Stato dominio Spiegazione
PROVISIONING Il certificato gestito da Google viene creato per il dominio. Google Cloud sta collaborando con l'autorità di certificazione per la firma del certificato.
ACTIVE Il dominio è stato convalidato correttamente per il provisioning del certificato. Se il certificato SSL è per più domini, il provisioning del certificato può essere eseguito solo dopo che tutti i domini hanno lo stato ACTIVE e anche lo stato gestito del certificato è ACTIVE.
FAILED_NOT_VISIBLE

Il provisioning del certificato non è stato completato per il dominio. Il problema potrebbe essere uno dei seguenti:

  • Il record DNS del dominio non viene risolto nell'indirizzo IP del bilanciatore del carico Google Cloud . Per risolvere il problema, aggiorna i record DNS A e AAAA in modo che puntino all'indirizzo IP del bilanciatore del carico.

    Il DNS non deve essere risolto in un indirizzo IP diverso da quello del bilanciatore del carico. Ad esempio, se un record A viene risolto nel bilanciatore del carico corretto, ma il record AAAA viene risolto in un altro modo, lo stato del dominio è FAILED_NOT_VISIBLE.

  • La propagazione completa dei record DNS A e record AAAA appena aggiornati può richiedere molto tempo. A volte la propagazione su internet richiede fino a 72 ore in tutto il mondo, anche se in genere sono necessarie alcune ore. Lo stato del dominio continua a essere FAILED_NOT_VISIBLE fino al completamento della propagazione.
  • Il certificato SSL non è collegato al proxy di destinazione del bilanciatore del carico. Per risolvere il problema, aggiorna la configurazione del bilanciatore del carico.
  • Le porte di frontend per la regola di forwarding non includono la porta 443 per i bilanciatori del carico delle applicazioni (globali o classici) o i bilanciatori del carico di rete proxy esterni. Per risolvere il problema, aggiungi una nuova regola di forwarding con la porta 443.
  • Al proxy di destinazione è collegata una mappa dei certificati di Certificate Manager. La mappa dei certificati collegata ha la precedenza e i certificati collegati direttamente vengono ignorati. Per risolvere il problema, scollega la mappa dei certificati dal proxy.
  • Se lo stato gestito è PROVISIONING, Google Cloud continua a riprovare il provisioning, anche se lo stato del dominio è FAILED_NOT_VISIBLE.
FAILED_CAA_CHECKING Il provisioning del certificato non è riuscito a causa di un problema di configurazione con il record CAA del dominio. Assicurati di aver seguito la procedura corretta.
FAILED_CAA_FORBIDDEN Il provisioning del certificato non è riuscito perché il record CAA del dominio non specifica una CA che Google Cloud deve utilizzare. Assicurati di aver seguito la procedura corretta.
FAILED_RATE_LIMITED Il provisioning del certificato non è riuscito perché un'autorità di certificazione ha una limitazione di frequenza per le richieste di firma di certificati. Puoi eseguire il provisioning di un nuovo certificato, passare all'utilizzo del nuovo certificato ed eliminare il certificato precedente oppure puoi contattare l'assistenzaGoogle Cloud .

Rinnovo dei certificati gestiti

Per assicurarti che i tuoi certificati non falliscano il passaggio di convalida del dominio del processo di rinnovo, consulta i requisiti per i record DNS A e AAAA.

Convalida del dominio da più prospettive

Google Cloud rinnova periodicamente i certificati gestiti da Google richiedendoli alle autorità di certificazione (CA). Le CA con cuiGoogle Cloud collabora per rinnovare i tuoi certificati utilizzano un metodo di convalida del dominio multi-prospettiva noto come Multi-Perspective Issuance Corroboration (MPIC). Nell'ambito di questo processo, le autorità di certificazione verificano il controllo del dominio controllando le impostazioni DNS del dominio e tentando di contattare il server dietro l'indirizzo IP del dominio. Queste verifiche vengono eseguite da più punti di osservazione su internet. Se la procedura di convalida non va a buon fine, i certificati gestiti da Google non vengono rinnovati. Di conseguenza, il bilanciatore del carico fornisce ai client un certificato scaduto, causando errori di certificato per gli utenti del browser e errori di connessione per i client API.

Per evitare errori di convalida del dominio da più prospettive per record DNS configurati in modo errato, tieni presente quanto segue:

  • I record A DNS (IPv4) e record AAAA DNS (IPv6) per i tuoi domini e gli eventuali sottodomini puntano solo all'indirizzo IP (o agli indirizzi) associato alla regola di forwarding (o alle regole) del bilanciatore del carico. La presenza di altri indirizzi nel record può causare un errore di convalida.
  • La CA, che esegue la convalida dei record DNS, esegue query sui record DNS da più località. Assicurati che il tuo provider DNS risponda in modo coerente a tutte le richieste di convalida del dominio globali.
  • L'utilizzo di GeoDNS (che restituisce indirizzi IP diversi in base alla località della richiesta) o di policy DNS basate sulla località può portare a risposte incoerenti e causare errori di convalida. Se il tuo provider DNS utilizza GeoDNS, disattivalo o assicurati che tutte le regioni restituiscano lo stesso indirizzo IP del bilanciatore del carico.
  • Devi specificare esplicitamente gli indirizzi IP del bilanciatore del carico nella configurazione DNS. I livelli intermedi, come una CDN, possono causare comportamenti imprevedibili. L'indirizzo IP deve essere direttamente accessibile senza reindirizzamenti, firewall o CDN nel percorso della richiesta. Per saperne di più, consulta la sezione Bilanciatori del carico dietro una CDN in questo documento.
  • Ti consigliamo di utilizzare uno strumento di controllo della propagazione DNS globale a tua scelta per verificare che tutti i record DNS pertinenti vengano risolti in modo corretto e coerente in tutto il mondo.

Verifica le modifiche alla configurazione

Dopo aver configurato i record DNS, puoi verificare che siano corretti creando un nuovo certificato e collegandolo al bilanciatore del carico insieme al certificato esistente. Questo passaggio forza un controllo immediato del provisioning dei certificati con la CA, consentendoti di verificare le modifiche alla configurazione in pochi minuti. Senza questo, i rinnovi automatici del certificato esistente possono richiedere giorni o settimane, lasciando incertezza sulla configurazione.

Se lo stato del certificato diventa ACTIVE, significa che il certificato è stato emesso, confermando così che la configurazione DNS è corretta. A questo punto, ti consigliamo di rimuovere il certificato precedente per evitare di avere due certificati distinti per lo stesso dominio. Questo processo non interrompe il traffico verso il bilanciatore del carico.

Il nuovo certificato funge da strumento di convalida: la sua creazione conferma che la convalida del dominio da più prospettive utilizzando MPIC funziona correttamente per la tua configurazione.

Bilanciatori del carico dietro una CDN

Per i bilanciatori del carico con CDN abilitata, alcuni provider CDN di terze parti nel percorso della richiesta potrebbero impedire il completamento delle richieste di convalida. Questo può accadere se il provider CDN sta attivamente eseguendo il proxy del traffico HTTP(S).

In questi casi, ti consigliamo di eseguire la migrazione dei certificati a Certificate Manager e di utilizzare il metodo di autorizzazione DNS per eseguire il provisioning dei certificati gestiti da Google. Quest'ultimo approccio non richiede che la CA contatti il bilanciatore del carico.

Risolvi i problemi relativi ai certificati SSL autogestiti

Questa guida descrive come risolvere i problemi di configurazione dei certificati SSL autogestiti.

Impossibile analizzare il certificato

Google Cloud richiede certificati in formato PEM. Se il certificato è in formato PEM, verifica quanto segue:

Puoi convalidare il certificato utilizzando il seguente comando OpenSSL, sostituendo CERTIFICATE_FILE con il percorso del file del certificato:

openssl x509 -in CERTIFICATE_FILE -text -noout

Se OpenSSL non è in grado di analizzare il certificato:

Nome comune o nome alternativo del soggetto mancante

Google Cloud richiede che il certificato abbia o un attributo common name (CN) o un attributo nome alternativo del soggetto (SAN). Per ulteriori informazioni, consulta Crea una CSR.

Quando entrambi gli attributi sono assenti, Google Cloud visualizza un messaggio di errore come il seguente quando provi a creare un certificato autogestito:

ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
 -   The SSL certificate is missing a Common Name(CN) or Subject Alternative
   Name(SAN).

Impossibile analizzare la chiave privata

Google Cloud richiede chiavi private in formato PEM che soddisfino i criteri per le chiavi private.

Puoi convalidare la chiave privata utilizzando il seguente comando OpenSSL, sostituendo PRIVATE_KEY_FILE con il percorso della chiave privata:

    openssl rsa -in PRIVATE_KEY_FILE -check

Le seguenti risposte indicano un problema con la chiave privata:

  • unable to load Private Key
  • Expecting: ANY PRIVATE KEY
  • RSA key error: n does not equal p q
  • RSA key error: d e not congruent to 1
  • RSA key error: dmp1 not congruent to d
  • RSA key error: dmq1 not congruent to d
  • RSA key error: iqmp not inverse of q

Per risolvere il problema, devi creare una nuova chiave privata e un nuovo certificato.

Chiavi private con passphrase

Se OpenSSL richiede una passphrase, dovrai rimuoverla dalla chiave privata prima di poterla utilizzare con Google Cloud. Puoi utilizzare il seguente comando OpenSSL:

openssl rsa -in PRIVATE_KEY_FILE \
    -out REPLACEMENT_PRIVATE_KEY_FILE

Sostituisci i segnaposto con valori validi:

  • PRIVATE_KEY_FILE: il percorso della chiave privata protetta con una passphrase
  • REPLACEMENT_PRIVATE_KEY_FILE: il percorso in cui vuoi salvare una copia della chiave privata in testo normale

Certificati intermedi in scadenza

Se un certificato intermedio scade prima del certificato server (foglia), questo potrebbe indicare che la CA non segue le best practice.

Quando un certificato intermedio scade, il certificato foglia utilizzato in Google Cloud potrebbe non essere più valido. Questo dipende dal client SSL, come segue:

  • Alcuni client SSL esaminano solo la data di scadenza del certificato foglia e ignorano i certificati intermedi scaduti.
  • Alcuni client SSL considerano non valida una catena con certificati intermedi scaduti e visualizzano un avviso.

Per risolvere il problema:

  1. Attendi che la CA passi a un nuovo certificato intermedio.
  2. Richiedi un nuovo certificato.
  3. Ricarica il nuovo certificato con le nuove chiavi.

La CA potrebbe anche consentire la firma incrociata per i certificati intermedi. Rivolgiti alla tua CA per conferma.

L'esponente pubblico RSA è troppo grande

Quando l'esponente pubblico RSA è maggiore di 65537, viene visualizzato il seguente messaggio di errore. Assicurati di utilizzare 65537, come specificato in RFC 4871.

ERROR: (gcloud.compute.ssl-certificates.create) Could not fetch resource:
 -   The RSA public exponent is too large.

Rimuovi il certificato SSL dal proxy di destinazione

I passaggi seguenti mostrano come rimuovere un singolo certificato SSL collegato al proxy HTTPS di destinazione:

  1. Esporta il proxy target-https-proxy in un file temporaneo.

    gcloud compute target-https-proxies export TARGET_PROXY_NAME > /tmp/proxy
    
  2. Modifica il file /tmp/proxy e rimuovi le seguenti righe:

    sslCertificates:
    -   https://www.googleapis.com/compute/v1/projects/...
    
  3. Importa il file /tmp/proxy.

    gcloud compute target-https-proxies import TARGET_PROXY_NAME \
       --source=/tmp/proxy
    
  4. (Facoltativo) Elimina il certificato SSL.

    gcloud compute ssl-certificates delete SSL_CERT_NAME
    

Sostituisci quanto segue:

  • TARGET_PROXY_NAME: il nome della risorsa proxy HTTPS di destinazione.
  • SSL_CERT_NAME: il nome del certificato SSL.