Introduzione

Con la crescita che si è avuta negli ultimi anni di siti e applicazioni Web che scambiano informazioni riservate da e verso gli utenti, risulta sempre più importante fornire un layer di sicurezza che consenta di accertare l’identità dell’host remoto e di assicurare uno scambio sicuro dei dati. Per questa ragione sempre più siti web implementano una comunicazione SSL attraverso l’acquisto e l’esposizione di un certificato validato da una Certificate Authority (CA). In questo articolo parleremo di Let’s Encrypt, una CA che si differenzia dalle altre poiché consente di ottenere certificati SSL in maniera del tutto gratuita.

Perché bisogna proteggere un sito con un certificato SSL?

Internet non è un luogo sicuro e i siti web hanno bisogno di qualcosa che protegga l’integrità, la riservatezza dei dati scambiati e che confermi l’identità dell’host con cui vogliamo comunicare. Qualunque sito non utilizzi questo tipo di certificato viene ormai considerato ed etichettato “sito non sicuro” ed ottiene anche un ranking inferiore nelle classifiche di, ad esempio, Google.

Questo perché il protocollo HTTP non è affidabile, perciò i browser consigliano di attuare il passaggio al protocollo HTTPS. Quest’ultimo utilizza certificati SSL (oppure TLS) e garantisce la crittografia della comunicazione, l’integrità dei dati e l’autenticazione, incrementando di gran lunga la privacy e la sicurezza.

Come fanno un sito web e un browser ad instaurare una connessione protetta?

HTTPS è l’impiego di HTTP attraverso una connessione sicura; HTTPS (HTTP over SSL) generalmente viene impiegato attraverso la porta TCP 443 (a differenza di HTTP che utilizza la porta TCP 80 di default).

URL con lucchetto verde e HTTPS

Per verificare che la connessione venga stabilita correttamente basta guardare la barra degli URL del nostro browser (generalmente questo viene indicato dal colore verde della barra o dalla presenza di lucchetti). Per stabilire una connessione sicura viene utilizzata la crittografia asimmetrica.

La logica utilizzata per stabilire questa connessione sicura è identica a quella applicata nell’indovinello “Il paese dei ladri”.

Il paese dei ladri

In un paese tutti gli abitanti sono ladri. Non si può camminare per strada con degli oggetti, senza che vengano rubati e l’unico modo per spedire qualcosa senza che venga rubato dai postini è l’utilizzo di una cassaforte chiusa con un lucchetto e contenente il nostro oggetto.
Dunque l’unica cosa che non viene rubata è una cassaforte chiusa con un lucchetto, mentre sia le casseforti aperte, sia i lucchetti vengono rubati.
Alla nascita ogni abitante riceve una cassaforte ed un lucchetto di cui possiede l’unica copia della chiave.
Ogni cassaforte può essere chiusa anche con più lucchetti ma la chiave non è cedibile e non può essere portata fuori dalla casa del proprietario, perché verrebbe rubata durante il trasporto.
Non si può in alcun modo fare una copia delle chiavi.
Come può un abitante di questo paese spedire il regalo di compleanno ad un proprio amico?

La soluzione è semplicissima:

  • il primo abitante spedisce la cassaforte chiusa con il proprio lucchetto;
  • il secondo abitante chiude la cassaforte con il proprio lucchetto e la spedisce nuovamente al primo abitante;
  • adesso il primo abitante può rimuovere il suo lucchetto e spedire nuovamente la cassaforte;
  • il secondo abitante può tranquillamente aprire il proprio lucchetto e vedere il contenuto della cassaforte.

L’unica differenza è che al posto del primo abitante abbiamo il server remoto e al posto del secondo abitante abbiamo il nostro browser.

Cos’è una Certificate Authority (CA) e che ruolo svolge?

Il soggetto (soggetto terzo di fiducia) che si occupa di emettere un certificato digitale, attraverso delle procedure standard di certificazione, si chiama Certificate Authority. Per richiedere ad una CA la generazione di un certificato si segue in breve la seguente procedura: il richiedente invia una richiesta di rilascio certificato (CSR) ad una CA generalmente contenente la chiave pubblica per la quale deve essere rilasciato il certificato, con nome di dominio e altre informazioni.

Cosa offre Let’s Encrypt e perché usarlo?

Per utilizzare uno o più certificati SSL è necessario quindi che i CA rilascino, a fronte di un pagamento, i certificati che generalmente hanno una scadenza annuale o biennale. Let’s Encrypt si occupa di fornire questi certificati in maniera gratuita, se si riesce a dimostrare di essere i possessori del server per il nome di dominio registrato nel certificato.

Lucchetto

Let’s Encrypt è un prodotto in costante evoluzione grazie alla community molto attenta. L’obiettivo è quello di rendere il web un luogo sicuro e in maniera semplice.

Come attivo Let’s Encrypt per il mio sito?

Per far sì che il nostro sito abbia Let’s Encrypt attivo è necessario effettuare delle challenge. Le challenge più conosciute sono: HTTP-01 e DNS-01.

Nel primo caso Let’s Encrypt rilascia un token al nostro ACME (protocollo di comunicazione che rende automatica l’interazione tra il nostro web server e la CA) che provvederà a creare un file con dentro il token, come se fosse un ID. Il nostro ACME comunicherà a Let’s Encrypt l’avvenuta creazione che proverà più e più volte a recuperarlo. Per far sì che il nostro certificato venga emesso, questa validazione deve andare a buon fine. Questo tipo di challenge può essere effettuato solamente esponendo la porta 80 del web server.

Nel caso della challenge DNS-01, Let’s Encrypt, rilascia un token al nostro ACME che però stavolta deve essere registrato come record TXT sotto il dominio di appartenenza. Adesso Let’s Encrypt interrogherà il server DNS per trovare il record TXT contenente il token. Il certificato verrà emesso solo se il risultato è positivo.

Quali sono le differenze tra Let’s Encrypt e altre CA?

Tuttavia ci sono ancora alcuni buoni motivi che possono indirizzare gli utenti a scegliere di acquistare un certificato SSL presso altre CA.

Grazie ad un certificato a pagamento e alla sua ampia personalizzazione, è possibile raggiungere degli standard di sicurezza più elevati (in questo caso si parla di Extended Validation Certificates).

I certificati offerti da Let’s Encrypt, inoltre, devono essere rinnovati entro 90 giorni, mentre altri certificati hanno scadenze che generalmente variano da uno a due anni dalla data di creazione: questo comporta che, se non si riesce a impostare il proprio ambiente applicativo in modo da richiedere certificati aggiornati in maniera automatica, sarà necessario, a differenza di ciò che avviene con certificati SSL a lunga scadenza, effettuare interventi sistemistici più frequenti.

Conclusione

Sicuramente possiamo dire che Let’s Encrypt è una soluzione conveniente per chi desidera abilitare l’encryption sui propri siti o applicazioni web in maniera gratuita. Per tale motivo noi alla IES Solutions utilizziamo Let’s Encrypt per alcuni dei nostri siti web consapevoli di fornire un servizio sicuro e di qualità ai nostri clienti.