Protezione dei domini personalizzati con SSL

Il supporto SSL di App Engine offre endpoint SSL distribuiti a livello globale e bilanciamento del carico integrato per gestire la tua app in modo sicuro, affidabile e rapido a livello mondiale.

Per impostazione predefinita, le connessioni HTTPS sul tuo dominio personalizzato sono abilitate automaticamente usando certificati SSL gestiti. Dopo il giorno di un dominio personalizzato all'applicazione e di aggiornare 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à impostato le tue chiavi personalizzate dominio nel tuo progetto App Engine.

  • Se utilizzi Cloud Load Balancing e NEGS serverless verso indirizzare il traffico alla tua applicazione App Engine, ti consigliamo di mappare un dominio personalizzato al bilanciatore del carico anziché direttamente alla tua app e usa Certificati SSL creati per il bilanciatore del carico. In questo modo si elimina il gestire certificati SSL separati per ogni app serverless. Inoltre, 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 i seguenti limiti:

    • Ti consigliamo di utilizzare i controlli in entrata in modo che la tua app riceva solo le richieste inviate dal bilanciatore del carico. (e il VPC, se lo usi). In caso contrario, gli utenti possono utilizzare URL di App Engine per bypassare il bilanciatore del carico, Google Cloud Armor criteri di sicurezza, certificati SSL e chiavi private che vengono trasmessi tramite il bilanciatore del carico.

Verifica un certificato gestito

Dopo aver configurato il dominio personalizzato e aggiornato il DNS record, un certificato SSL gestito viene fornito automaticamente entro pochi minuti. La selezione dell'autorità di certificazione è automatica; il certificato gestito è firmato da Google Trust Services (GTS) oppure Crittografiamo.

Per verificare che sia stato eseguito il provisioning del certificato:

  1. Nella console Google Cloud, vai a App Engine > Impostazioni > Domini personalizzati:

    Vai a Domini personalizzati

  2. 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 di certificati per 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, ManagedCertificate.ManagementStatus potrebbe essere FAILED_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, tutti i tentativi di rinnovo non sono riusciti. Controlla le impostazioni DNS e poi aggiorna il mapping di domini personalizzato seguendo questa procedura i passaggi 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, esiste un limite di 50 certificati gestiti. alla settimana per ciascun dominio base. Se riscontri questo limite, App Engine continua a tentare di emettere certificati gestiti finché non sono state completato.

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:

  1. Nella console Google Cloud, vai a App Engine > Impostazioni > Domini personalizzati:

    Vai a Domini personalizzati

  2. Seleziona il dominio che vuoi proteggere e fai clic su Abilita gestione gestita sicurezza.

Disattiva i certificati SSL gestiti

Per disattivare i certificati SSL gestiti:

  1. Nella console Google Cloud, vai a App Engine > Impostazioni > Domini personalizzati:

    Vai a Domini personalizzati

  2. Seleziona il dominio e fai clic su Disattiva sicurezza gestita.

Utilizza i tuoi certificati SSL

Anziché utilizzare i certificati SSL gestiti, puoi usare 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 sono conformi, leggi Applicazione di Certificate Transparency.

Per utilizzare e gestire i tuoi certificati SSL anziché quelli gestiti da Google certificati:

  1. Assicurati di aver già impostato le tue chiavi personalizzate dominio nel tuo App Engine progetto.

  2. Disattivare i certificati predefiniti gestiti da Google.

  3. Richiedi un certificato per il tuo dominio all'autorità di certificazione (CA) del tuo scelta. La procedura esatta può variare a seconda dell'autorità, ma vedi Ottenere un certificato per i passaggi tipici.

  4. Converti la chiave privata e i file del certificato SSL in formati supportate da App Engine. Prima di poter caricare i file, è necessario la chiave privata deve essere convertita in una chiave privata RSA e i tuoi certificati SSL devono essere concatenati in un unico file. Per ulteriori informazioni, vedi Converti le tue chiavi private e concatena i tuoi certificati SSL.

  5. 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 verificarne la proprietà www.example.com o example.com.
    • Se il certificato è per www.example.com e sub.example.com puoi verificare la proprietà di www.example.com e sub.example.com, o di example.com.
    • Se il certificato è per *.example.com, devi verificarne la proprietà example.com.
  6. Carica la chiave privata e il certificato SSL, poi mappa il dominio alla tua app:

    1. Nella console Google Cloud, vai a App Engine > Impostazioni > Certificati SSL:

      Vai a SSL Certificati

    2. Fai clic su Carica un nuovo certificato.

    3. Carica il certificato SSL concatenato in PEM encoded X.509 public key certificate, ad esempio concat.crt, quindi carica la chiave privata RSA in Chiave privata RSA non criptata con codifica PEM, ad esempio myserver.key.pem.
    4. Fai clic su Carica. Ogni certificato SSL che carichi visibile e disponibile per l'uso da parte di tutti gli altri progetti Google Cloud, quindi non devi caricare più volte il certificato.
    5. Seleziona il certificato da assegnare a un dominio e quindi fai clic su Salva per utilizzare SSL per quel dominio.

  7. Verifica le modifiche visitando il tuo dominio nel browser utilizzando https, ad esempio https://www.example.com.

Trasferisci le mappature da un certificato di gestione a un nuovo certificato

Quando un certificato si avvicina alla data di scadenza, devi carica un nuovo certificato e trasferisci le mappature esistenti del certificato precedente al nuovo certificato. La procedura seguente presuppone che l'utente non è ancora scaduto e al momento gestisce il tuo dominio personalizzato.

Per trasferire le mappature da un certificato in gestione attiva:

  1. Richiedi un nuovo certificato per il tuo dominio all'autorità di certificazione (CA) di la tua scelta. Consulta la sezione Ottenere un certificato per passaggi tipici.

  2. Converti la chiave privata e i file del certificato SSL in formati supportate da App Engine. Per maggiori dettagli, vedi Converti le tue chiavi private e concatena i tuoi certificati SSL.

  3. Carica la chiave privata RSA e il certificato SSL concatenato:

    1. Carica il certificato SSL nella pagina Certificati SSL.

      Vai a SSL Certificati
        .
      1. Fai clic su Carica un nuovo certificato.

      2. 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 esempio myserver.key.pem.
      3. Fai clic su Carica.
    2. Seleziona il nuovo certificato appena aggiunto dall'elenco dei certificati. quindi seleziona il dominio gestito dal vecchio certificato.
    3. Fai clic su Salva per trasferire le mappature dal certificato precedente a quello nuovo.

Ottenere un certificato

La procedura per ottenere un certificato SSL varia in base al l'autorità di certificazione che utilizzi. Le istruzioni qui fornite potrebbero devono essere leggermente regolati. In genere, ciascuna autorità di certificazione fornisce istruzioni per assisterti nella procedura.

Per ottenere un certificato da utilizzare con l'app App Engine:

  1. Genera la tua chiave privata e una richiesta di firma del certificato (CSR) utilizzando il openssl questo strumento:

    1. Esegui questo comando da una directory in cui vuoi creare 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 la chiave privata viene archiviato. Esempio: myserver.key
      • [MY_CSR].csr è il file generato per la firma del certificato richiesta. Esempio: server.csr
    2. 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 disponi di un nome, puoi utilizzare il tuo nome dell'azienda.
      • 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 indicare altri valori, sono tutti facoltativi.

  2. Determina quale autorità di certificazione funziona per te, quindi acquista una certificato. Ad esempio, puoi utilizzare: SSLMate, Thawte Comodo o qualsiasi un'altra autorità di certificazione.

    Per maggiori dettagli sui tipi di certificati supportati, vedi App Engine per i certificati SSL.

  3. Quando l'autorità di certificazione richiede i contenuti del file CSR, segui le istruzioni per copiare e incollare i contenuti dal file .csr che generato in precedenza, ad esempio server.csr.

  4. Segui le istruzioni quando la CA richiede l'approvazione del proprietario del dominio.

  5. Dopo aver fornito l'approvazione del proprietario del dominio, la CA ti invia il certificato, che in genere è un file ZIP. Decomprimi il file in un file di lavoro in modo da poterli concatenare certificati per il caricamento in App Engine.

Converti le chiavi private e concatena i certificati SSL {#convert_private_keys_and_concatenate_ssl_certificates}

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.

  1. Converti il file della chiave privata generato in precedenza in un file non criptato Chiave privata RSA. 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
      
  2. Concatena tutti i file .crt dalla tua CA in un unico file, utilizzando il metodo 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 dell'autorità di certificazione. Esempio: concat.crt

      Esempio:

      cat www_example_com.crt AddTrustExternalCARoot.crt RSADomainValidationSecureServerCA.crt RSAAddTrustCA.crt > concat.crt
      
  3. Verifica il certificato SSL e la chiave privata:

    1. Per verificare che la chiave privata e il certificato corrisponde, puoi usare i comandi openssl x509 e openssl rsa. Esempi:

      openssl x509 -noout -modulus -in concat.crt | openssl md5
      openssl rsa -noout -modulus -in myserver.key.pem | openssl md5
      

      Entrambi i campi openssl x509 e openssl rsa dovrebbero restituire lo stesso output.

    2. Per verificare che un certificato e la relativa catena di CA siano validi, puoi utilizzare verifica openssl . Ad esempio:

      openssl verify -verbose -CAfile concat.crt concat.crt
      
  4. 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 singolo/nome host
  • 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 di chiave massimo consentito: 2048 bit

Se il certificato host richiede un certificato intermedio o concatenato poiché molte autorità di certificazione (CA) sono state rilasciate, devi Aggiungi i certificati intermedi o concatenati alla fine del pubblico del certificato.

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 utilizzarle con SSL, ha senso configurare un certificato SAN o con caratteri jolly. Solo certificati con caratteri jolly supportare un livello di sottodominio.

Rimuovi certificati SSL personalizzati

Per interrompere l'utilizzo di un certificato SSL personalizzato, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina SSL di App Engine impostazioni dei certificati.

    Vai alle impostazioni dei certificati SSL

  2. Fai clic sul certificato che vuoi rimuovere dal tuo dominio.

  3. Deseleziona il nome di dominio che non vuoi più utilizzare il certificato SSL quindi fai clic su Salva.

Utilizza 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

  1. Installa nmap Network Mapper sul tuo computer, se non è già disponibile. Per le istruzioni di installazione, visita la pagina https://nmap.org/.

  2. Per vedere quali versioni TLS e crittografie sono abilitate 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. Tu puoi utilizzare il tuo dominio personalizzato o il nome host appspot.com che App Engine creato per la tua app. Ad esempio:

    nmap -sV --script ssl-enum-ciphers -p 443 example.uc.r.appspot.com

Disabilita versioni e crittografie 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 altre connessioni.