Configurare un reindirizzamento da HTTP ad HTTPS per i bilanciatori del carico delle applicazioni esterni globali

Questa pagina mostra come configurare un reindirizzamento da HTTP a HTTPS per il bilanciatore del carico delle applicazioni esterno globale. Questa pagina riguarda solo un bilanciatore del carico delle applicazioni esterno globale. Se utilizzi un bilanciatore del carico in una modalità diversa, consulta una delle seguenti pagine:

Questo esempio mostra come utilizzare la mappa URL reindirizzamenti per reindirizzare tutte da HTTP a HTTPS. Questo esempio mostra come configurare i reindirizzamenti utilizzando le porte ben note 80 (per HTTP) e 443 (per HTTPS). Tuttavia, non è necessario utilizzare questi numeri di porta specifici. Ogni inoltro per un bilanciatore del carico delle applicazioni può fare riferimento a una singola porta da 1-65535.

HTTPS utilizza TLS (SSL) per criptare le richieste e le risposte HTTP, il che lo rende più sicuro. Un sito web che utilizza HTTPS ha https:// all'inizio del suo URL anziché http://.

Per i nuovi bilanciatori del carico delle applicazioni HTTPS

Se stai creando un nuovo bilanciatore del carico delle applicazioni HTTPS, puoi utilizzare la console Google Cloud per configurare un reindirizzamento da HTTP a HTTPS.

Durante la creazione del frontend del bilanciatore del carico, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina di configurazione del bilanciatore del carico.

    Vai a Bilanciamento del carico (crea un bilanciatore del carico delle applicazioni esterno globale)

  2. In Nome bilanciatore del carico, inserisci un nome.
  3. Fai clic su Configurazione frontend.
  4. Per Protocollo, seleziona HTTPS (include HTTP/2).
  5. In Indirizzo IP, fai clic su Crea indirizzo IP. Inserisci un nome per il nuovo indirizzo IP statico e fai clic su Prenota.
  6. Per Certificato, seleziona un certificato SSL.
  7. Per creare il reindirizzamento, seleziona la casella di controllo Attiva il reindirizzamento da HTTP a HTTPS.
  8. Fai clic su Fine.
  9. Completa il backend e le altre configurazioni richieste.
  10. Fai clic su Crea.

Devi selezionare il protocollo HTTPS e utilizzare un IP riservato (non temporaneo) per poter selezionare la casella di controllo.

la casella di controllo Reindirizzamento da HTTP a HTTPS nella console Google Cloud.
Figura 1. Casella di controllo Reindirizzamento da HTTP a HTTPS nella console Google Cloud (fai clic per ingrandire).

A seconda del tipo di backend, utilizza le istruzioni della console Google Cloud riportate in una delle seguenti guide per completare questa configurazione:

L'impostazione della casella di controllo Attiva il reindirizzamento da HTTP a HTTPS crea automaticamente un bilanciatore del carico HTTP parziale aggiuntivo costituito da una mappa URL, una regola di inoltro e un proxy HTTP di destinazione. Questo bilanciatore del carico HTTP parziale utilizza lo stesso indirizzo IP del bilanciatore del carico HTTPS e reindirizza le richieste HTTP al frontend HTTPS del bilanciatore del carico. Utilizza 301 Moved Permanently come codice di risposta per il reindirizzamento predefinito.

Dopo aver creato il bilanciatore del carico HTTPS, puoi vedere il bilanciatore del carico HTTP parziale nell'elenco dei bilanciatori del carico, con un suffisso -redirect. Testa la configurazione seguendo i passaggi descritti in Testare il reindirizzamento da HTTP a HTTPS.

Per i bilanciatori del carico esistenti

Se hai già un bilanciatore del carico delle applicazioni HTTPS (chiamato qui) LB1) che gestisce il traffico HTTPS sulla porta 443, devi creare un Bilanciatore del carico delle applicazioni HTTP (chiamato qui LB2) con la seguente configurazione:

  • Lo stesso indirizzo IP frontend utilizzato da LB1
  • Un reindirizzamento configurato nella mappa URL

Questo bilanciatore del carico HTTP parziale utilizza lo stesso indirizzo IP del bilanciatore del carico HTTPS e reindirizza le richieste HTTP al frontend HTTPS del bilanciatore del carico.

Questa architettura è mostrata nel diagramma seguente.

Architettura di configurazione del reindirizzamento da HTTP a HTTPS.
Figura 2. Architettura di configurazione del reindirizzamento da HTTP a HTTPS (fai clic per ingrandire).

Reindirizzamento del traffico al bilanciatore del carico HTTPS

Dopo aver verificato che il bilanciatore del carico HTTPS (LB1) funziona, puoi creare il bilanciatore del carico HTTP parziale (LB2) con il suo frontend configurate per reindirizzare il traffico a LB1.

In questo esempio viene utilizzato il codice di risposta 301. In alternativa, puoi utilizzare un codice di risposta diverso.

Per configurare il reindirizzamento con gcloud, devi importare un file YAML e assicurarti che il proxy HTTP di destinazione indichi la mappa URL che reindirizza il traffico. Se utilizzi la console Google Cloud, questa operazione viene gestita per te.

I bilanciatori del carico delle applicazioni esterni regionali non sono supportati nella console Google Cloud.

gcloud

  1. Crea un file YAML /tmp/web-map-http.yaml. In questo esempio viene utilizzato MOVED_PERMANENTLY_DEFAULT come codice di risposta.
  2.        kind: compute#urlMap
           name: web-map-http
           defaultUrlRedirect:
             redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
             httpsRedirect: True
           tests:
           - description: Test with no query parameters
             host: example.com
             path: /test/
             expectedOutputUrl: https://example.com/test/
             expectedRedirectResponseCode: 301
           - description: Test with query parameters
             host: example.com
             path: /test/?parameter1=value1&parameter2=value2
             expectedOutputUrl: https://example.com/test/?parameter1=value1&parameter2=value2
             expectedRedirectResponseCode: 301
           
  3. Convalida la mappa URL.
  4.        gcloud compute url-maps validate --source /tmp/web-map-http.yaml
           

    Se i test hanno esito positivo e il comando restituisce un messaggio di operazione riuscita, salva le modifiche alla mappa URL.

  5. Crea la mappa URL del bilanciatore del carico HTTP importando il file YAML . Il nome di questa mappa URL è web-map-http.
  6.        gcloud compute url-maps import web-map-http \
               --source /tmp/web-map-http.yaml \
               --global
           

    Se stai aggiornando una mappa URL esistente, viene visualizzato il seguente prompt:

           Url Map [web-map-http] will be overwritten.
    
           Do you want to continue (Y/n)?
           

    Per continuare, premi Y.

  7. Verifica che la mappa URL sia aggiornata. Mappa URL del bilanciatore del carico HTTP dovrebbe avere un aspetto simile al seguente:
  8.        gcloud compute url-maps describe web-map-http
           
           creationTimestamp: '2020-03-23T10:53:44.976-07:00'
           defaultUrlRedirect:
             httpsRedirect: true
             redirectResponseCode: MOVED_PERMANENTLY_DEFAULT
           fingerprint: 3A5N_RLrED8=
           id: '2020316695093397831'
           kind: compute#urlMap
           name: web-map-http
           selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/web-map-http
           
  9. Creare un nuovo proxy HTTP di destinazione o aggiornarne uno esistente utilizzando web-map-http come mappa URL.
  10.        gcloud compute target-http-proxies create http-lb-proxy \
               --url-map=web-map-http \
               --global
           
    OPPURE
            gcloud compute target-http-proxies update http-lb-proxy \
               --url-map=web-map-http \
               --global
           
  11. Crea una regola di forwarding per instradare le richieste in entrata a il proxy. Il flag --address specifica lb-ipv4-1, che è lo stesso Indirizzo IP utilizzato per il bilanciatore del carico HTTPS esterno.
  12.        gcloud compute forwarding-rules create http-content-rule \
               --load-balancing-scheme=EXTERNAL_MANAGED \
               --address=lb-ipv4-1 \
               --network-tier=PREMIUM \
               --global \
               --target-http-proxy=http-lb-proxy \
               --ports=80
           

Aggiungere un'intestazione HSTS personalizzata

Quando aggiungi il parametro HTTP Strict-Transport-Security al servizio di backend del bilanciatore del carico HTTPS, il carico il bilanciatore invia l'intestazione personalizzata al client in modo che la prossima volta tenta di accedere all'URL tramite HTTP, il browser reindirizza la richiesta. La le impostazioni dell'intestazione sono le seguenti:

  • Nome intestazione: Strict-Transport-Security
  • Valore intestazione: max-age=31536000; includeSubDomains; preload

Per aggiungere l'intestazione personalizzata alla configurazione del servizio di backend, utilizza --custom-response-header flag.

gcloud compute backend-services update BACKEND_SERVICE_NAME_LB1 \
    --global \
    --custom-response-header='Strict-Transport-Security:max-age=31536000; includeSubDomains; preload'

Per ulteriori informazioni, consulta la sezione sulla creazione di intestazioni.

Test del reindirizzamento da HTTP a HTTPS

Prendi nota dell'indirizzo IP riservato che utilizzi per entrambi i bilanciatori del carico.

gcloud compute addresses describe lb-ipv4-1 
--format="get(address)"
--global

In questo esempio, supponiamo che l'indirizzo IP riservato sia 34.98.77.106. L'URL http://34.98.77.106/ reindirizza a https://34.98.77.106/.

Dopo alcuni minuti, puoi verificare eseguendo il seguente comando curl.

curl -v http://hostname.com

Esempio di output:

* Connected to 34.98.77.106 (34.98.77.106) port 80 (#0)
> GET / HTTP/1.1
> Host: hostname.com
> User-Agent: curl/7.64.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Cache-Control: private
< Content-Type: text/html; charset=UTF-8
< Referrer-Policy: no-referrer
< Location: https://hostname.com
< Content-Length: 220
< Date: Fri, 30 Jul 2021 21:32:25 GMT
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://hostname.com">here</A>.
</BODY></HTML>
* Connection #0 to host hostname.com left intact

Passaggi successivi