IAndreaGiuseppe

TIL - HTTPS su infrastruttura AWS dietro Load Balancer

  1. Pre-requisiti
  2. Load Balancer
  3. Il menu di gestione delle regole
  4. La regola

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.

# Pre-requisiti

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

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.

# Cos'è un 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.

E' 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]
            
        

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:

E' un'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 (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.