Il supporto SSL di App Engine offre endpoint SSL distribuiti a livello globale e bilanciamento del carico integrato per fornire la tua applicazione in modo sicuro, affidabile e rapido a un pubblico globale.
Per impostazione predefinita, le connessioni HTTPS sul tuo dominio personalizzato vengono abilitate automaticamente utilizzando i certificati SSL gestiti. Dopo aver mappato un dominio personalizzato alla tua applicazione e aggiornato i tuoi record DNS, App Engine esegue il provisioning di un certificato SSL gestito, rinnova il certificato e lo revoca quando rimuovi il dominio personalizzato dall'applicazione.
Prima di iniziare
Assicurati di aver già configurato il tuo dominio personalizzato nel progetto App Engine.
Se utilizzi Cloud Load Balancing e un gruppo di endpoint di rete serverless per instradare il traffico alla tua app App Engine, ti consigliamo di mappare il dominio personalizzato al bilanciatore del carico, anziché direttamente all'app, e di utilizzare i certificati SSL gestiti da Google creati per il bilanciatore del carico. Ciò elimina la necessità di gestire certificati SSL separati per ogni app serverless. Con Cloud Load Balancing, puoi impostare criteri SSL che controllano le funzionalità di SSL che il bilanciatore del carico negozia con i client.
Per ulteriori informazioni, consulta le seguenti pagine:
Tieni presente le seguenti limitazioni:
- Ti consigliamo di utilizzare i controlli in entrata in modo che la tua app riceva solo le richieste inviate dal bilanciatore del carico (e dal VPC, se lo utilizzi). In caso contrario, gli utenti possono utilizzare l'URL di App Engine della tua app per ignorare il bilanciatore del carico, i criteri di sicurezza di Google Cloud Armor, i certificati SSL e le chiavi private trasmesse attraverso il bilanciatore del carico.
Verificare un certificato gestito
Dopo aver configurato il dominio personalizzato e aggiornato i record DNS, viene fornito automaticamente un certificato SSL gestito entro pochi minuti. La selezione dell'autorità di certificazione è automatica. Il certificato gestito è firmato da Google Trust Services (GTS) o Let's Encrypt.
Per verificare se è stato eseguito il provisioning del certificato:
Nella console Google Cloud, vai ad App Engine > Impostazioni > Domini personalizzati:
La sicurezza SSL viene visualizzata come gestita da Google.
Risolvere i problemi relativi ai certificati SSL gestiti
Potrebbe essere necessario aggiornare i record DNS per il dominio personalizzato per verificare il tuo nome di dominio. App Engine non può eseguire il provisioning dei certificati per domini non verificati.
Puoi controllare lo stato del certificato con l'API Admin utilizzando una richiesta AuthorizedCertificate.GET.
Se non è stato eseguito il provisioning di un certificato gestito perché i record DNS non sono disponibili, il campo
ManagedCertificate.ManagementStatus
potrebbe essereFAILED_RETRYING_NOT_VISIBLE
. Verifica che i record DNS siano aggiornati, attendi qualche minuto e riprova. Potrebbe essere necessario attendere fino a 24 ore prima che i record DNS diventino disponibili.Se lo stato è
FAILED_PERMANENT
, significa che tutti i tentativi di rinnovo non sono andati a buon fine. Controlla le impostazioni DNS, quindi aggiorna la mappatura personalizzata del dominio seguendo la procedura per eseguire l'aggiornamento ai certificati SSL gestiti.
Esegui l'upgrade ai certificati SSL gestiti
Prima di eseguire l'upgrade ai certificati SSL gestiti da Google, tieni presente che i certificati gestiti non supportano le mappature dei caratteri jolly.
Se utilizzi sottodomini e il certificato è emesso da Let's Encrypt, esiste un limite di 50 certificati gestiti alla settimana per ogni dominio di base. Se raggiungi il limite, App Engine continua a provare a emettere certificati gestiti fino a quando tutte le richieste non vengono soddisfatte.
Per passare dai tuoi certificati SSL ai certificati SSL gestiti da Google o per aggiungere certificati SSL gestiti a un'app esistente con un dominio personalizzato, aggiorna la mappatura del dominio:
Nella console Google Cloud, vai ad App Engine > Impostazioni > Domini personalizzati:
Seleziona il dominio che vuoi proteggere e fai clic su Abilita sicurezza gestita.
Disabilita i certificati SSL gestiti
Per disabilitare i certificati SSL gestiti:
Nella console Google Cloud, vai ad App Engine > Impostazioni > Domini personalizzati:
Seleziona il dominio e fai clic su Disattiva sicurezza gestita.
Usa i tuoi certificati SSL
Anziché utilizzare i certificati SSL gestiti, puoi utilizzare il tuo certificato. Se il certificato non ha una prova di trasparenza, l'app potrebbe mostrare avvisi SSL in Chrome a causa dell'applicazione della prova di Certificate Transparency. Per ulteriori informazioni sulle prove di Certificate Transparency e su come rispettarle, consulta la sezione Applicazione di Certificate Transparency.
Per utilizzare e gestire i tuoi certificati SSL anziché i certificati gestiti da Google:
Assicurati di aver già configurato il dominio personalizzato nel tuo progetto App Engine.
Ottieni un certificato per il tuo dominio dall'autorità di certificazione (CA) di tua scelta. La procedura esatta può variare a seconda dell'autorità.
Converti i file della chiave privata e del certificato SSL in formati supportati da App Engine. Prima di poter caricare i file, la chiave privata deve essere convertita in una chiave privata RSA e i certificati SSL devono essere concatenati in un unico file.
Assicurati di avere le autorizzazioni corrette nella console Google Cloud e di verificare la proprietà (passaggio 3) di tutti i domini correlati o dei relativi domini principali. Ad esempio:
- Se il certificato riguarda
www.example.com
, puoi verificare la proprietà diwww.example.com
oexample.com
. - Se il certificato è per
www.example.com
esub.example.com
, puoi verificare la proprietà sia diwww.example.com
che disub.example.com
o diexample.com
. - Se il certificato riguarda
*.example.com
, devi verificare la proprietà diexample.com
.
- Se il certificato riguarda
Carica la chiave privata e il certificato SSL, quindi mappa il dominio alla tua app:
-
Nella console Google Cloud, vai ad App Engine > Impostazioni > Certificati SSL:
-
Fai clic su Carica un nuovo certificato.
-
Carica il certificato SSL concatenato come
PEM encoded X.509 public key certificate
, ad esempioconcat.crt
, quindi carica la chiave privata RSA in Chiave privata RSA codificata PEM non crittografata, ad esempiomyserver.key.pem
. - Fai clic su Carica. Ogni certificato SSL caricato è visibile e disponibile per l'utilizzo da parte di tutti gli altri progetti Google Cloud, così non devi caricare ripetutamente lo stesso certificato.
- Seleziona il certificato che vuoi assegnare a un dominio, quindi fai clic su Salva per utilizzare SSL per quel dominio.
-
Testa le modifiche visitando il tuo dominio nel browser, utilizzando
https
, ad esempiohttps://www.example.com
.
Trasferisci le mappature da un certificato di pubblicazione a un nuovo certificato
Quando un certificato si avvicina alla data di scadenza, devi caricarne uno nuovo e trasferire le mappature esistenti del certificato precedente al nuovo certificato. La procedura seguente presuppone che il certificato esistente non sia ancora scaduto e che stia pubblicando attualmente il tuo dominio personalizzato.
Per trasferire mappature da un certificato in gestione attiva:
Richiedi un nuovo certificato per il tuo dominio all'autorità di certificazione (CA) che preferisci.
Converti la chiave privata e i file del certificato SSL in formati supportati da App Engine.
Carica la tua chiave privata RSA e il certificato SSL concatenato:
-
Carica il certificato SSL nella pagina Certificati SSL.
Vai ai certificati SSL-
Fai clic su Carica un nuovo certificato.
-
Carica il certificato SSL concatenato come certificato di chiave pubblica X.509 con codifica PEM, ad esempio
concat.crt
, quindi carica la chiave privata RSA in Chiave privata RSA codificata PEM non crittografata, ad esempiomyserver.key.pem
. - Fai clic su Carica.
-
- Seleziona il nuovo certificato che hai appena aggiunto dall'elenco dei certificati, quindi seleziona il dominio gestito dal certificato precedente.
- Fai clic su Salva per trasferire le mappature dal certificato precedente a quello nuovo.
-
Ottieni un certificato
La procedura per ottenere un certificato SSL varia a seconda dell'autorità di certificazione utilizzata. Le istruzioni fornite qui potrebbero essere leggermente modificate. In genere, ogni autorità di certificazione fornisce istruzioni per aiutarti nel processo.
Per ottenere un certificato da utilizzare con l'app App Engine:
Genera la tua chiave privata e una richiesta di firma del certificato (CSR) utilizzando lo strumento openssl:
Esegui questo comando da una directory in cui vuoi creare il file
server.csr
:openssl req -nodes -newkey rsa:2048 -keyout [MY_PRIVATE_KEY].key -out [MY_CSR].csr
dove:
[MY_PRIVATE_KEY].key
è il file generato in cui è archiviata la chiave privata. Esempio:myserver.key
[MY_CSR].csr
è il file generato per la richiesta di firma del certificato. Esempio:server.csr
Quando richiesto, inserisci le seguenti informazioni:
- Il tuo codice paese di 2 cifre, ad esempio
US
per gli Stati Uniti. - Il nome della tua città.
- Il nome della tua azienda. Se non hai un'azienda, puoi utilizzare il tuo nome.
- La tua unità organizzativa o
NA
se non è presente. - Un nome comune che rappresenta il tuo dominio, ad esempio:
www.example.com
- Il tuo indirizzo email.
Non devi fornire gli altri valori, sono tutti facoltativi.
- Il tuo codice paese di 2 cifre, ad esempio
Stabilisci l'autorità di certificazione più adatta alle tue esigenze, quindi acquista un certificato. Ad esempio, puoi utilizzare: SSLMate, Thawte, Comodo o qualsiasi altra autorità di certificazione.
Per maggiori dettagli sui tipi di certificati supportati, vedi Supporto di App Engine per i certificati SSL.
Quando la tua CA richiede i contenuti del file CSR, segui le relative istruzioni per copiare e incollare i contenuti dal file
.csr
che hai generato in precedenza, ad esempioserver.csr
.Segui le istruzioni quando la tua CA richiede l'approvazione del proprietario del dominio.
Dopo aver ricevuto l'approvazione del proprietario del dominio, la CA ti invia il certificato, che in genere è un file ZIP. Decomprimi il file in una directory di lavoro per concatenare i certificati per il caricamento in App Engine.
Converti le chiavi private e concatena i certificati SSL
Devi convertire la tua chiave privata in una chiave privata RSA e concatenare tutti i tuoi certificati SSL, prima di caricare la tua chiave privata e i certificati SSL in App Engine.
Converti il file della chiave privata generato in precedenza in una chiave privata RSA non criptata. Ad esempio, puoi eseguire il seguente comando
openssl rsa
:openssl rsa -in [MY_PRIVATE_KEY].key -out [MY_RSA_KEY].key.pem
dove:
[MY_PRIVATE_KEY].key
è il file generato in cui è archiviata la chiave privata. Esempio:myserver.key
[MY_RSA_KEY].key
è il file generato che contiene la chiave privata RSA non criptata. Esempio:myserver.key.pem
Esempio:
openssl rsa -in myserver.key -out myserver.key.pem
Concatena tutti i file
.crt
della tua CA in un unico file utilizzando il seguente comando:cat [MY_DOMAIN_CERT].crt [MY_SecureServerCA].crt [MY_TrustCA].crt [MY_TrustExternalCARoot].crt > [MY_CONCAT_CERT].crt
dove
[MY_DOMAIN_CERT].crt
è il certificato per il tuo dominio. Esempio:www_example_com.crt
[MY_SecureServerCA].crt
,[MY_TrustCA].crt
e[MY_TrustExternalCARoot].crt
sono gli altri file di certificati forniti dalla tua CA.[MY_CONCAT_CERT].crt
è il file concatenato che contiene tutti i file di certificato.crt
della tua CA. Esempio:concat.crt
Esempio:
cat www_example_com.crt AddTrustExternalCARoot.crt RSADomainValidationSecureServerCA.crt RSAAddTrustCA.crt > concat.crt
Verifica il certificato SSL e la chiave privata:
Per verificare che la chiave privata e il certificato corrispondano, puoi utilizzare i comandi
openssl x509
eopenssl rsa
. Esempi:openssl x509 -noout -modulus -in concat.crt | openssl md5 openssl rsa -noout -modulus -in myserver.key.pem | openssl md5
Entrambi i comandi openssl x509 e openssl rsa devono restituire lo stesso output.
Per verificare che un certificato e la relativa catena di CA siano validi, puoi utilizzare il comando openssl verify. Ad esempio:
openssl verify -verbose -CAfile concat.crt concat.crt
Quando è tutto pronto, puoi caricare la chiave privata RSA e i certificati concatenati su App Engine.
Supporto App Engine per i certificati SSL
App Engine supporta i seguenti tipi di certificati:
- Dominio singolo/nome host
- Autofirmato
- Jolly
- SAN (nome alternativo del soggetto) / multidominio
Richiede alcuni elementi dei tuoi certificati e delle tue chiavi:
- La chiave privata e il certificato devono essere caricati in formato PEM.
- Le chiavi private non devono essere criptate.
- Un file di certificato può contenere al massimo cinque certificati, inclusi quelli concatenati e intermedi.
- Tutti i nomi dei soggetti nel certificato host devono corrispondere o essere sottodomini dei domini verificati dell'utente.
- Le chiavi private devono utilizzare la crittografia RSA.
- Modulo chiave massimo consentito: 2048 bit
Se il certificato host richiede un certificato intermedio o concatenato, allo stesso modo di molte autorità di certificazione (CA), devi aggiungere i certificati intermedi o concatenati alla fine del file del certificato pubblico.
Alcune funzionalità di App Engine utilizzano sottodomini speciali. Ad esempio, un'applicazione può utilizzare i sottodomini per indirizzare i servizi dell'applicazione o per gestire diverse versioni dell'applicazione. Per utilizzarle con SSL, ha senso impostare un certificato SAN o con caratteri jolly. I certificati con caratteri jolly supportano solo un livello di sottodominio.
Rimuovi certificati SSL personalizzati
Per interrompere l'uso di un certificato SSL personalizzato, segui questi passaggi:
Nella console Google Cloud, vai alla pagina delle impostazioni dei certificati SSL di App Engine.
Fai clic sul certificato che vuoi rimuovere dal tuo dominio.
Deseleziona il nome di dominio per il quale non vuoi più utilizzare il certificato SSL, quindi fai clic su Salva.
Usa intestazioni Strict-Transport-Security
Per motivi di sicurezza, tutte le applicazioni devono incoraggiare i client a utilizzare connessioni https
. Per indicare al browser di preferire https
rispetto a http
,
utilizza l'intestazione Strict-Transport-Security
.
Visualizza versioni e crittografie TLS abilitate
Installa
nmap
Network Mapper sul tuo computer, se non è già disponibile. Per le istruzioni di installazione, visita la pagina https://nmap.org/.Per visualizzare le versioni e le crittografie TLS abilitate per la tua app, inserisci il comando seguente:
nmap -sV --script ssl-enum-ciphers -p 443 HOSTNAME
Sostituisci
HOSTNAME
con il nome host della tua app. Puoi utilizzare il tuo dominio personalizzato o il nome hostappspot.com
creato da App Engine per l'app. Ad esempio:nmap -sV --script ssl-enum-ciphers -p 443 example.uc.r.appspot.com
Disattiva versioni e crittografie TLS
Se utilizzi Cloud Load Balancing e NEG serverless per instradare il traffico all'app App Engine, puoi disabilitare una versione o crittografia TLS definendo un criterio di sicurezza SSL che specifichi quali versioni e crittografie TLS possono essere utilizzate per le connessioni HTTPS o SSL.
Passaggi successivi
Se vuoi che Cloud Load Balancing gestisca le richieste in arrivo al tuo dominio personalizzato, vedi Eseguire la migrazione del dominio personalizzato App Engine a Cloud Load Balancing.