Sia che si tratti di un e-commerce, di un sito vetrina che di una API REST destinata ad essere consumata da client Android o iOS oggi disporre di un certificato SSL/TLS valido è diventato praticamente obbligatorio.
Vediamo in questo articolo invece come ottenere ed installare, un certificato SSL/TLS di tipo wildcard (che tuteli ad esempio *.miodominio.it) in maniera del tutto gratuita, sfruttando i servizi messi a disposizione da AWS Amazon Web Services.
L’importanza di dotarsi di un certificato SSL/TLS
Ci sono numerose ragioni per dotarsi di un certificato SSL/TLS.
I motivi sono da un lato tecnici, con la possibilità di cifrare il traffico end-to-end fra client e server, da un altro, nel caso di e-commerce e siti web, anche commerciali visto che disporre di un certificato SSL (meglio se di tipo EV) ha positive ricadute sia a livello SEO che di performance in termini di pura conversione dei visitatori in acquisti.
In rete ci sono decine, se non centinaia di rivenditori di certificati SSL che con cifre che vanno dalle poche decine di euro per certificati che tutelano il singolo dominio, fino ad arrivare anche a oltre 1000 $ per i certificati di tipo EV più sofisticati e robusti, rilasciano chiavi e certificati installabili su qualsiasi server.
Vediamo in questo articolo invece come ottenere, ed installare, un certificato di tipo wildcard (che tuteli ad esempio *.miodominio.it) in maniera del tutto gratuita, sfruttando i servizi messi a disposizione da AWS Amazon Web Services.
Prerequisiti
Per poter seguire questo tutorial è necessario disporre di un account AWS attivo. Se non lo avete potete crearne uno in pochi secondi direttamente su https://aws.amazon.com.
ELbuild utilizza da anni la suite AWS e molti dei software personalizzati che sviluppiamo sono ospitati su macchine virtuali create con Amazon Web Services.
I servizi AWS che useremo sono i seguenti:
- AWS Certificate Manager
- AWS ELB Elastic Load Balancer
- AWS EC2
- AWS Route 53 (opzionale)
A livello logico quello che vogliamo ottenere è un load balancer classico, che abbia installato un certificato SSL/TLS, ed a cui far puntare un CNAME del dominio che stiamo validando. Il load balancer riceverà le richieste HTTPS sulla porta 443 e potrà essere configurato per inoltrarle in maniera arbitraria verso la porta 8080 o 80 di un’istanza EC2 che ospita il servizio che stiamo proteggendo con certificato SSL/TLS.
E’ immediatamente evidente il vantaggio offerto da una struttura di questo tipo, in quanto la configurazione SSL/TLS risiede su un entità virtualizzata a monte del servizio effettivo che continua ad operare senza la minima variazione o configurazione aggiuntiva. Inoltre disporre di un load balancer ci consente di variare in modo trasparente all’utenza il tipo di infrastruttura che fornisce il servizio, senza interruzione alcuna.
AWS Certificate Manager, richiedere il certificato
Il primo passaggio è quello di validare il dominio e richiedere il certificato. Supponiamo di voler certificare il sottodominio secure.elbuild.it, le operazioni necessarie sono le seguenti, a partire dall’accesso alla console di gestione AWS.
STEP 1 – Accedere a Certificate Manager
STEP 2 – Iniziare la procedura di validazione dominio
STEP 3 – Selezionare i domini da validare
Da notare che se vogliamo che il certificato includa anche il dominio “base” elbuild.it è necessario specificarlo esplicitamente perchè la wildcard *.elbuild.it protegge tutto ciò che realmente si presenta sotto forma di sottodominio “di primo livello” di elbuild.it. Questa configurazione quindi protegge il nostro obiettivo ovvero secure.elbuild.it ma non protegge ad esempio test.secure.elbuild.it.
Terminata l’aggiunta dei domini cliccare su “Review and request”.
STEP 4 – Confermare i domini da validare
Il prossimo step richiede solo di confermare i domini da validare. Alla conferma AWS effettuerà un lookup tramite whois ed invierà la mail di validazione del dominio sia ai contatti tecnici estratti dal registro associato al dominio, sia ad alcuni indirizzi preconfigurati che solitamente esistono e sono associati al gestore del dominio.
STEP 5 – Verificare il dominio
Al click su Continue AWS invia le email agli indirizzi sopra menzionati. Qualora non aveste accesso a queste caselle, o nessuna di esse esistesse nel vostro dominio avete due scelte, la prima è editare le informazioni del whois ed aspettare che si propaghino, la seconda più veloce creare un alias di una delle caselle verso cui AWS invia e mapparlo su una casella che già ricevete.
Lo stato finale del dominio dovrebbe essere quello nell’immagine sotto.
AWS Certificate Manager, creazione del load balancer
Una volta generato il certificato si può procedere con la creazione del load balancer, tramite lo strumento AWS ELB, accessibile dal pannello di gestione EC2. Quindi dalla console iniziale selezioniamo EC2 e nella colonna sinistra della console troviamo una voce “Load Balancers”, cliccandola si apre il pannello sotto.
Cliccando su “Create Load Balancer” si apre la schermata di selezione della tipologia dell’ELB da utilizzare. Selezioniamo Classic Load Balancer ed andiamo avanti.
Selezionato il tipo accediamo agli step di creazione del load balancer.
STEP 1 – Definizione del load balancer
In questa schermata c’è la configurazione più importante, in pratica diciamo al loadbalancer di esporre pubblicamente la porta 443 (tradizionalmente associata ad HTTPS) e di redirigerla sulla porta 80 dell’host interno che andremo a configurare.
Questa configurazione è quella che consente di eliminare del tutto dall’host la complessità di gestire certificati SSL/TLS, inclusa la potenza di calcolo additiva necessaria a gestire la cifratura HTTPS. Tutto avviene infatti a livello di ELB e per l’host interno le richieste sono in chiaro.
STEP 2 – Selezione Security Group
Lo step successivo, “Assign Security Group” consente di gestire il firewalling software all’interno del VPC di cui fa parte il load balancer. Per questo tutorial l’opzione di default è adeguata.
STEP 3- Associazione del certificato
Questo passaggio è quello che consente di “caricare” il certificato precedentemente generato sul load balancer.
STEP 4- Configurazione health check
Questo step consente di configurare la modalità con cui il load balancer determina se le istanze del pool sono “in salute” o meno. Nella norma si tratta semplicemente di fare una richiesta HTTP periodica verso un path definito e di valutare lo stato di salute della macchina in funzione della risposta 200 o meno. Ad esempio per un host con un tradizionale stack LAMP si potrebbe utilizzare uno script PHP che simula una connessione al DB e controlla ad esempio di poter scrivere su un path del filesystem prima di rispondere con un 200 OK. La strategia dipende insomma dal tipo di servizio che sta dietro il load balancer.
Le variabili da inserire consentono di configurare la logica dell’algoritmo di health check e sono abbastanza intuitive.
STEP 5 – Assegnazione istanze al pool
Questo step consiste banalmente nell’associare l’istanza che ospita il servizio con il load balancer.
Una volta creato il load balancer AWS fornisce un record di tipo A (ovvero utilizzabile come un IP) a cui è possibile far puntare un CNAME (nel nostro caso secure.elbuild.it) in modo da poter poi fare richieste HTTPS verso quella URL.
Qualora si usi Route 53, ovvero il servizio DNS di AWS, la propagazione del record è istantanea, altrimenti dipende dal gestore dei NS.
Nell’immagine sotto il record A da utilizzare è evidenziato con un riquadro rosso.
Una volta configurato il CNAME secure.elbuild.it per puntare a elbuild-test-elb-705233335.eu-central-1.elb.amazonaws.com, ed attesi i tempi di propagazione possiamo caricare la URL con il browser https://secure.elbuild.it e verificare che risulti protetto.
Sommario
In questo articolo abbiamo visto come utilizzare la suite di servizi di Amazon Web Services per richiedere ed installare un certificato SSL wildcard valido e compatibile con tutti i browser, ed utilizzarlo per proteggere un banale servizio web.
ELbuild ha una esperienza molto solida nella configurazione di infrastrutture cloud-based e assiste quotidianamente aziende consolidate ma anche startup innovative nella transizione da soluzioni di hosting tradizionale a soluzioni IaaS.
Se ti interessa il nostro aiuto per analizzare cosa la suite di servizi AWS può fare per te contattaci.