Categorie
Sviluppo software

Certificato SSL/TLS: come ottenerne uno gratis da AWS

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.

Certificato SSL/TLS: come ottenerne uno gratis da AWS

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

AWS Certificati SSL gratuiti | Selezione dello strumento Certificate Manager
Selezione dello strumento Certificate Manager

STEP 2 – Iniziare la procedura di validazione dominio

AWS Certificati SSL gratuiti | Inizio procedura Certificate Manager
Inizio procedura Certificate Manager

STEP 3 – Selezionare i domini da validare

AWS Certificati SSL gratuiti | Selezione domini da validare
Selezione 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

AWS Certificati SSL gratuiti | Conferma domini da validare
Conferma 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

AWS Certificati SSL gratuiti | Invio email validazione dominio
Invio email validazione 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 Certificati SSL gratuiti | Dominio correttamente validato
Dominio correttamente validato

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.

Creazione load balancer AWS
Creazione load balancer AWS | Inizio procedura

Cliccando su “Create Load Balancer” si apre la schermata di selezione della tipologia dell’ELB da utilizzare. Selezioniamo Classic Load Balancer ed andiamo avanti.

Creazione load balancer AWS | Selezione tipologia ELB
Creazione load balancer AWS | Selezione tipologia ELB

Selezionato il tipo accediamo agli step di creazione del load balancer.

STEP 1 – Definizione del load balancer

Creazione load balancer AWS | Configurazione listeners
Creazione load balancer AWS | Configurazione listeners

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.

Creazione load balancer AWS | Selezione security group
Creazione load balancer AWS | Selezione security group

STEP 3- Associazione del certificato

Questo passaggio è quello che consente di “caricare” il certificato precedentemente generato sul load balancer.

Creazione load balancer AWS | Associazione certificato SSL
Creazione load balancer AWS | Associazione certificato SSL

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.

Creazione load balancer AWS | Health Check
Creazione load balancer AWS | Health Check

STEP 5 – Assegnazione istanze al pool

Questo step consiste banalmente nell’associare l’istanza che ospita il servizio con il load balancer.

Creazione load balancer AWS | Selezione istanza AWS EC2
Creazione load balancer AWS | Selezione istanza AWS EC2

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.

Creazione ELB | Record A da associare a dominio
Creazione ELB | Record A da associare a dominio

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.

Certificato SSL Gratuito ed host sicuro

Certificato SSL Gratuito ed host sicuro Certificato SSL Gratuito ed host sicuro

Certificato SSL Gratuito ed host sicuro

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.

Di Luca Adamo

Luca Adamo si è laureato con lode in Ingegneria delle Telecomunicazioni all'Università degli studi di Firenze ed è dottorando in Ingegneria Informatica, Multimedialità e Telecomunicazioni, sempre nella stessa facoltà. Le sue competenze tecniche includono lo sviluppo software, sia orientato al web che desktop, in C/C++ e Java (J2EE, J2SE, J2ME), l'amministrazione di macchine Unix-based, la gestione di reti di telecomunicazioni, ed il design di database relazionali.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *