HTTPS su infrastruttura AWS dietro Load Balancer

Eureka! Ho risolto un problema che mi assillava da un paio di anni. Ieri (20/01/2021) sono riuscito ad attivare il redirect automatico su protocollo sicuro HTTPS in tutti i siti che gestico con AWS.

Haha.. che monarca, Andrea! 😆 Mi ci sono voluti veramente un paio di anni per scoprire questa feature in AWS.

Requisiti

Prima di poter utilizzare questa funzionalità di AWS è necessario avere:

  • un account AWS,
  • configurato una rete interna per la gestione dei vostri server,
  • una istanza EC2 attiva con relativo database,
  • un load balancer con i gruppi target associati.

Se non hai la più pallida idea di cosa ho appena scritto nella lista di cui sopra forse hai bisogno di partire da qualcosa di più semplice e quindi ti rimando alla documentazione uffiale di AWS per i webserver.

Per chi invece ha capito di cosa sto parlando, possiamo dire che il requisito di base è un webserver EC2 attivo su infrastruttura AWS con bilanciamento del carico.

Il bilanciatore di carico

Un Load Balancer o Bilanciatore di Carico potrebbe essere definito come una sorta di Proxy generalizzato in quanto permette di distribuire un traffico in entrata su più target nell'infrastruttura. I target posso essere svariati e non necessariamente devono essere dei server web; tra i target più noti abbiamo: server, containers, DNS, SMTP ed indirizzi IP.

Il concetto principale da comprendere nel nostro caso è la posizione in cui si trova il bilanciatore nella nostra infrastruttura. Il bilanciatore si trova nel bel mezzo della mischia, tra il Client ed i Targets.

[Client] - - - - {Load Balancer} - - - - [Targets]

Eccolo li il nostro bilanciatore. Bello fermo fisso saldo nella mischia.

È proprio questa sua posizione che lo rende l'attore privilegiato per gestire il redirect del traffico (e non solo) verso i protocolli sicuri. 🤔 Se ci fosse un modo per istruire il bilanciatore a leggere la richiesta in ingresso avremmo la possibilità di gestire il traffico e anche di modificarlo a nostro piacimento.

                                     / - - - - [Server-A]
                                    |
[Traffic-Request] - - - -> {Load Balancer} - - - - [IP]
                                    |
                                     \ - - - - [Server-B]

Il menu di gestione delle regole

Si tratta semplicemente di definire una regola in entrata per il bilanciatore di carico. I passi da seguire per trovare la pagina corretta per la gestione delle regole sono:

  • Effettuare l'accesso alla console di Aws.
  • Assicurarsi di essere sulla zona corretta dove sono posizionati i vostri server. Nel menu in alto a destra di selezione delle zone:
    • Selezionare la zona di residenza del server che volete modificare.
  • Dal menu servizi selezionare la voce EC2 per visualizzare la sezione del parco server.
  • Sul menu principale di sinistra, selezionare la voce Sistemi di bilanciamento del carico,
  • selezionare il bilanciatore che si vuole modificare,
  • nella sezione dettagli, in basso selezionare la tab relativa ai Listeners.
  • Cliccare sul link View/Edit Rules che si trova in fondo alla riga relativa ad ogni listener.

È una opzione leggermente nascosta se avete uno schermo piccolo, AWS non è famoso per la chiarezza delle sue interfacce grafiche, ma alla fine all'interno di questa pagina è possibile trovare la gestione delle regole da applicare per ogni listener.

Nel prossimo paragrafo vediamo come configurare la regola di redirect automatico verso protocolli sicuri.

La regola

Ci sono 3 tipi di regole che possiamo applicare in ascolto del nostro bilanciatore: Forward to, Redirect to e Return Fixed Response. La nostra è una regola di Redirect to che a parole di spiega cosi:

Se l'host che ho in entrata è xxx.com o yyy.com o ... allora esegui un reindirizzamento verso lo stesso host, applica alcune modifiche e rispondi con uno stato HTTP_301 Moved Permanently.

La traduzione della frase di cui sopra è riepilogata nell'immagine qui sotto.

Una volta che abbiamo impostato la regola, basta semplicemente convalidare le due sezioni e salvare (pulsante in alto a destra) ed il gioco è fatto.

A questo punto è tutto configurato ed il nostro load balancer farà in automatico il redirect di tutto il traffico in entrata verso il protocollo https.

Ogni volta che nella barra degli indirizzi di un browser viene digitato il vostro nome dominio il bilanciatore applicherà la regola ed eseguirà un redirect verso la versione con protocollo sicuro.