Il supporto SSL di App Engine offre endpoint SSL distribuiti a livello globale e bilanciamento del carico integrato per pubblicare la tua app in modo sicuro, affidabile e veloce per un pubblico mondiale.
Per impostazione predefinita, le connessioni HTTPS sul tuo dominio personalizzato vengono attivate automaticamente utilizzando i certificati SSL gestiti. Dopo aver mappato un dominio personalizzato alla tua applicazione e aggiornato i record DNS, App Engine esegue il provisioning di un certificato SSL gestito, lo rinnova 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 il bilanciamento del carico di Cloud e il gruppo di endpoint di rete serverless (NEGS) per instradare il traffico alla tua app App Engine, ti consigliamo di mappare il tuo dominio personalizzato al bilanciatore del carico anziché direttamente alla tua app e di utilizzare i certificati SSL gestiti da Google creati per il bilanciatore del carico. Questo elimina la necessità di gestire certificati SSL separati per ogni app serverless. Con Cloud Load Balancing, puoi impostare criteri SSL per controllare le funzionalità di SSL che il bilanciatore del carico negozia con i client.
Per ulteriori informazioni, consulta le seguenti pagine:
Tieni presente la seguente limitazione:
- Ti consigliamo di utilizzare i controlli di immissione in modo che la tua app riceva solo le richieste inviate dal bilanciatore del carico (e dalla VPC, se la utilizzi). In caso contrario, gli utenti possono utilizzare l'URL App Engine della tua app per bypassare il bilanciatore del carico, i criteri di sicurezza di Google Cloud Armor, i certificati SSL e le chiavi private trasmessi tramite 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 da Let's Encrypt.
Per verificare che sia 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
Potresti dover aggiornare i record DNS per il tuo dominio personalizzato. per verificare il tuo nome di dominio. App Engine non può eseguire il provisioning dei certificati per i domini non verificati.
Puoi verificare lo stato del tuo 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 tuoi record DNS sono aggiornate, attendi qualche minuto e riprova. L'operazione può richiedere fino a 24 ore per rendere disponibili i record DNS.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 del dominio personalizzato 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 non supportano le mappature con caratteri jolly.
Se utilizzi sottodomini e il certificato è emesso da Let's Encrypt, è un limite di 50 certificati gestiti. alla settimana per ciascun dominio base. Se raggiungi il limite, App Engine continua a tentare di emettere certificati gestiti finché non sono state soddisfatte tutte le richieste.
Per eseguire lo spostamento dai tuoi certificati SSL ai certificati SSL gestiti da Google o a aggiungere certificati SSL gestiti a un'app esistente con un dominio personalizzato, aggiornare la mappatura del tuo dominio:
Nella console Google Cloud, vai ad App Engine > Impostazioni > Domini personalizzati:
Seleziona il dominio che vuoi proteggere e fai clic su Attiva la sicurezza gestita.
Disattiva i certificati SSL gestiti
Per disattivare i certificati SSL gestiti:
Nella console Google Cloud, vai ad App Engine > Impostazioni > Domini personalizzati:
Seleziona il dominio e fai clic su Disattiva la sicurezza gestita.
Utilizzare i tuoi certificati SSL
Anziché utilizzare certificati SSL gestiti, puoi utilizzare il tuo certificato. Se le tue Il certificato non ha una prova di trasparenza, la tua app potrebbe mostrare avvisi SSL in Chrome a causa della prova di trasparenza dei certificati dell'applicazione delle norme. Per ulteriori informazioni sulle prove di trasparenza dei certificati e su come conformarsi, consulta Applicare Certificate Transparency.
Per utilizzare e gestire i tuoi certificati SSL anziché quelli gestiti da Google:
Assicurati di aver già configurato il tuo dominio personalizzato nel 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 disporre delle autorizzazioni corrette nel Console Google Cloud e proprietà verificata (passaggio 3) di tutti i domini correlati o dei relativi domini principali. Ad esempio:
- Se il certificato è per
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à di entrambiwww.example.com
esub.example.com
o diexample.com
. - Se il certificato è per
*.example.com
, devi verificarne la proprietàexample.com
.
- Se il certificato è per
Carica la chiave privata e il certificato SSL, quindi mappa il tuo dominio alla tua app:
-
Nella console Google Cloud, vai a App Engine > Impostazioni > Certificati SSL:
-
Fai clic su Carica un nuovo certificato.
-
Carica il certificato SSL concatenato in
PEM encoded X.509 public key certificate
, ad esempioconcat.crt
, quindi carica la chiave privata RSA in Chiave privata RSA non criptata con codifica PEM, ad esempiomyserver.key.pem
. - Fai clic su Carica. Ogni certificato SSL che carichi è visibili e disponibile per l'utilizzo da parte di tutti gli altri progetti Google Cloud, quindi non devi caricare più volte lo stesso certificato.
- Seleziona il certificato che vuoi assegnare a un dominio e poi fai clic su Salva per utilizzare SSL per quel dominio.
-
Verifica le modifiche visitando il tuo dominio nel browser utilizzando
https
, ad esempiohttps://www.example.com
.
Trasferisci le mappature da un certificato di gestione a un nuovo certificato
Quando si avvicina la data di scadenza di un certificato, dovrai caricarne uno nuovo e trasferire le mappature esistenti del vecchio certificato al nuovo. La procedura che segue presuppone che il certificato esistente non sia ancora scaduto e che al momento stia pubblicando il tuo dominio personalizzato.
Per trasferire le mappature da un certificato in gestione attiva:
Ottieni un nuovo certificato per il tuo dominio dall'autorità di certificazione (CA) di tua scelta.
Converti la chiave privata e i file dei certificati SSL in formati supportate da App Engine.
Carica la chiave privata RSA e il certificato SSL concatenato:
-
Carica il certificato SSL nella pagina Certificati SSL.
Vai a Certificati SSL-
Fai clic su Carica un nuovo certificato.
-
Carica il certificato SSL concatenato in
Certificato di chiave pubblica X.509 con codifica PEEM, ad esempio
concat.crt
, quindi carica la chiave privata RSA in Chiave privata RSA con codifica PEM non criptata, per esempiomyserver.key.pem
. - Fai clic su Carica.
-
- Seleziona il nuovo certificato appena aggiunto dall'elenco dei certificati. quindi seleziona il dominio gestito dal vecchio certificato.
- Fai clic su Salva per trasferire le mappature dal vecchio al nuovo certificato.
-
Ottenere un certificato
La procedura per ottenere un certificato SSL varia a seconda dell'autorità di certificazione utilizzata. Le istruzioni fornite qui potrebbero devono essere leggermente regolati. In genere, ogni autorità di certificazione fornisce istruzioni per aiutarti a svolgere la procedura.
Per ottenere un certificato da utilizzare con la tua app App Engine:
Genera la tua chiave privata e una richiesta di firma del certificato (CSR) utilizzando il openssl questo strumento:
Esegui il seguente comando da una directory in cui vuoi creare il
server.csr
file: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 la chiave privata viene archiviato. 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. Puoi utilizzare il tuo nome se non hai una società.
- 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 è necessario fornire gli altri valori, che sono tutti facoltativi.
- Il tuo codice paese di 2 cifre, ad esempio
Determina quale autorità di certificazione funziona per te, quindi acquista una certificato. Ad esempio, puoi utilizzare: SSLMate, Thawte, Comodo o qualsiasi altra autorità di certificazione.
Per maggiori dettagli sui tipi di certificati supportati, vedi App Engine per i certificati SSL.
Quando la CA richiede i contenuti del file CSR, segui le sue istruzioni per copiare e incollare i contenuti dal file
.csr
che hai generato in precedenza, ad esempioserver.csr
.Segui le istruzioni quando la CA richiede l'approvazione del proprietario del dominio.
Dopo che avrai fornito l'approvazione del proprietario del dominio, l'autorità di certificazione ti invierà il certificato, che in genere è un file ZIP. Decomprimi il file in un file di lavoro per concatenare quelle certificati per il caricamento in App Engine.
Convertire le chiavi private e concatenare i certificati SSL
Devi convertire la tua chiave privata in una chiave privata RSA e concatenare tutte dei tuoi certificati SSL, prima di caricare la 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 questo comando
openssl rsa
:openssl rsa -in [MY_PRIVATE_KEY].key -out [MY_RSA_KEY].key.pem
dove:
[MY_PRIVATE_KEY].key
è il file generato che contiene se la chiave privata viene archiviata. Esempio:myserver.key
[MY_RSA_KEY].key
è il file generato che contiene dati non criptati Chiave privata RSA. Esempio:myserver.key.pem
Esempio:
openssl rsa -in myserver.key -out myserver.key.pem
Concatena tutti i file
.crt
dalla tua CA in un unico file, utilizzando 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 certificato forniti dalla tua CA.[MY_CONCAT_CERT].crt
è il file concatenato che contiene tutti i file dei certificati.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 corrispondenza, puoi usare 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
I comandi openssl x509 e openssl rsa devono restituire lo stesso output.
Per verificare che un certificato e la relativa catena 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 concatenata in App Engine.
Supporto di App Engine per i certificati SSL
App Engine supporta i seguenti tipi di certificati:
- Dominio/nome host singolo
- Autofirmato
- Jolly
- Nome alternativo del soggetto (SAN) / multidominio
Richiede alcuni certificati e 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; questo numero include certificati intermedi e concatenati.
- Tutti i nomi oggetto sul certificato host devono corrispondere o essere sottodomini del domini verificati dell'utente.
- Le chiavi private devono usare la crittografia RSA.
- Modulo della chiave massimo consentito: 2048 bit
Se il certificato host richiede un certificato intermedio o a catena, come emesso da molte autorità di certificazione (CA), devi aggiungere i certificati intermedi o a catena alla fine del file del certificato pubblico.
Alcune funzionalità di App Engine utilizzano sottodomini speciali. Ad esempio, un'applicazione può utilizzare i sottodomini per gestire i servizi dell'applicazione, o per gestire versioni diverse della tua applicazione. Per utilizzarli con SSL, è consigliabile configurare un certificato SAN o jolly. Solo certificati con caratteri jolly supportare un livello di sottodominio.
Rimuovere i certificati SSL personalizzati
Per interrompere l'utilizzo di un certificato SSL personalizzato:
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 cui non vuoi più utilizzare il certificato SSL, quindi fai clic su Salva.
Utilizza le intestazioni Strict-Transport-Security
Per motivi di sicurezza, tutte le applicazioni devono incoraggiare i client a utilizzare
https
connessioni. 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 computer, se non è già disponibile. Per le istruzioni di installazione, visita la pagina https://nmap.org/.Per vedere quali versioni e crittografi TLS sono abilitati per la tua app, inserisci il seguente comando:
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 la tua app. Ad esempio:nmap -sV --script ssl-enum-ciphers -p 443 example.uc.r.appspot.com
Disattivare le versioni e i metodi di crittografia TLS
Se utilizzi Cloud Load Balancing e NEG serverless per indirizzare il traffico alla tua applicazione App Engine, puoi disabilitare versione o crittografia definendo un criterio di sicurezza SSL che specifica quali versioni TLS e crittografie possono essere utilizzate per HTTPS o SSL e connessioni a Internet.
Passaggi successivi
Se vuoi che Cloud Load Balancing gestisca le richieste in entrata al tuo dominio personalizzato, consulta Esegui la migrazione del dominio personalizzato App Engine a Cloud Load Balancing.