Let's Encrypt è una certification authority, che si trova nello stato di beta pubblica dal 3 dicembre 2015 [1], ed ha come obiettivo quello del rilascio gratuito di certificati X.509 per il protocollo TLS tramite un processo automatizzato che mira ad eliminare le procedure manuali per la creazione, la validazione, il rilascio ed il rinnovo dei certificati[2].

Let's Encrypt
Fondazione2014
FondatoreElectronic Frontier Foundation
Mozilla Foundation
Università del Michigan
ScopoX.509 Certification authority
Sede centraleStati Uniti (bandiera) San Francisco
Area di azioneMondo (bandiera) Mondo
MottoEncrypt the entire web
Sito web

Scopo

Lo scopo principale del progetto è quello di riuscire a cifrare tutte le comunicazioni sul World Wide Web [3]. Let's Encrypt si prefigge di raggiungere questo scopo azzerando il costo dei certificati ed andando ad automatizzare il processo di configurazione del web server, della verifica tramite email e del rinnovo del certificato. In questo modo la complessità di gestione e manutenzione di una cifratura TLS si riduce drasticamente (su un web server Linux sono sufficienti dai 20 ai 30 secondi per configurare il supporto ad HTTPS[4]).

Il client di Let's Encrypt verrà incluso anche nei repository ufficiali di Debian, al fine di favorire maggiormente la diffusione del client [5]. I browser principali, quali Firefox e Chrome stanno facendo affidamento su Let's Encrypt per deprecare l'utilizzo di connessioni HTTP non cifrate[6][7].

La beta di Let's Encrypt rilascia solamente certificati di tipo Domain Validated, non è previsto il rilascio di certificati di tipo Organization Validation o Extended Validation[8]. Al tempo stesso non ci sono prospettive per il rilascio di certificati di tipo Wildcard, in quanto ritenuti non necessari se considerata la facilità e la velocità con cui è possibile ottenere il certificato per un nuovo dominio[8]

Uno dei principi fondamentali su cui si basa tutto lo sviluppo di Let's Encrypt è la trasparenza. Per questo motivo Let's si è impegnata a sviluppare i propri software sotto licenze libere[9] ed inoltre viene pubblicata la lista di tutti i certificati rilasciati.[10][11]

Soggetti coinvolti

Let's Encrypt è un servizio offerto dal Internet Security Research Group (ISRG), un'organizzazione senza scopo di lucro con il focus principale sulla sicurezza su internet. Gli sponsor principali del progetto sono la Electronic Frontier Foundation (EFF), la Mozilla Foundation, Akamai, Cisco, Chrome ed OVH. Fra gli altri partern vi sono anche la certification authority IdenTrust, la Università del Michigan, la Stanford School of Law, la Linux Foundation e Facebook[12].

Technical Advisory Board

Tecnologie

 
Schermata di selezione dei domini
 
Schermata di successo

Nel giugno 2015, Let's Encrypt ha generato un certificato root RSA che si trova attualmente su un hardware security module (HSM) attualmente offline.[13] Il certificato root è stato utilizzato per firmare due certificati intermedi, i quali sono a loro volta cross-signed da parte di IdenTrust[13]. Uno dei certificati intermedi viene utilizzato per la firma dei certificati rilasciati, mentre l'altro viene mantenuto offline a scopo di backup nel caso ci fossero problemi con il primo certificato[13].

Il cross-signing da parte di IdenTrust consente alla maggior parte dei browser di considerare i certificati come attendibili, anche nel caso in cui il certificato root di Let's Encrypt non venga riconosciuto dal browser[14].

Gli sviluppatori di Let's Encrypt prevedono di generare anche un certificato root ECDSA entro l'inizio del 2016[13][15].

Protocollo

Il protocollo utilizzato da Let's Encrypt per l'autenticazione e il rilascio dei certificati si chiama Automated Certificate Management Environment (ACME), è un protocollo del tipo challenge-response. Il server (Let's Encrypt) presenta al client (il web server) un insieme di challenges che il proprietario del dominio deve risolvere per provare di essere il responsabile del dominio[16].

Nella versione attuale di Let's Encrypt è supportata solamente la challenge di tipo HTTP: si richiede al gestore del web server di ritornare un token a fronte di una richiesta GET eseguita sul web server[16].

Il protocollo ACME prevede anche altri tipi di challenge, in particolare Let's Encrypt prevede di supportare le challenge di tipo DNS: si richiede di inserire un record di tipo TXT contenente un token presso il server DNS del dominio per cui si richiede il certificato[17].

Tutte le richieste effettuate tramite il protocollo ACME avvengono attraverso JSON firmati (anche detti JSON web signature, JWS) scambiati su connessioni HTTPS[18]. La versione draft delle specifiche del protocollo può essere trovata su GitHub[19]. Un versione del protocollo ACME è stata inoltre inviata all'Internet Engineering Task Force (IETF) per la sua standardizzazione[20].

Implementazioni Software

La certification authority consiste in un software chiamato Boulder e scritto in Go, che implementa il protocollo lato server. Boulder viene rilasciato come software libero sotto licenza Mozilla Public License (MPL)[21], di fatto offre delle API RESTful che possono essere invocate tramite canale cifrato con TLS.

Il software che esegue sul lato client (sul web server) si chiama letsencrypt, è scritto in Python ed è rilasciato con licenza Apache[22]. Il software client si occupa della gestione dei certificati, del processo di validazione del dominio, dell'installazione dei certificati, della configurazione HTTPS sul web server e del rinnovo dei certificati. Il client permette di configurare in automatico i web server Apache ed nginx[23].

Note

  1. ^ (EN) Entering Public Beta, su letsencrypt.org. URL consultato il 28 febbraio 2016https://letsencrypt.org/2015/11/12/public-beta-timing.html.
  2. ^ (EN) Launching in 2015: A Certificate Authority to Encrypt the Entire Web, su Electronic Frontier Foundation. URL consultato il 28 febbraio 2016.
  3. ^ (EN) About Let's Encrypt, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  4. ^ (EN) EFF wants to make HTTPS the default protocol, su SD Times. URL consultato il 28 febbraio 2016.
  5. ^ (EN) python-letsencrypt package, su Debian Package Tracker. URL consultato il 28 febbraio 2016.
  6. ^ (EN) Deprecating Non-Secure HTTP, su Mozilla Blog. URL consultato il 28 febbraio 2016.
  7. ^ (EN) Marking HTTP as non secure, su The Chromium Project. URL consultato il 28 febbraio 2016.
  8. ^ a b (EN) Let's Encrypt FAQ, su community.letsencrypt.org. URL consultato il 28 febbraio 2016.
  9. ^ (EN) Let's Encrypt Client Licence (TXT), su GitHub. URL consultato il 28 febbraio 2016.
  10. ^ (EN) Certificates, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  11. ^ (EN) Comodo Certificate Search, su cert.sh. URL consultato il 28 febbraio 2016.
  12. ^ (EN) Current Sponsors, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  13. ^ a b c d (EN) Let's Encrypt Root and Intermediate Certificates, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  14. ^ (EN) Let's Encrypt is Trusted, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  15. ^ (EN) Elliptic Curve Cryptography (ECC) Support, su community.letsencrypt.org. URL consultato il 28 febbraio 2016.
  16. ^ a b (EN) How it works, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  17. ^ (EN) DNS challenge is in staging, su community.letsencrypt.org. URL consultato il 28 febbraio 2016.
  18. ^ (EN) Let's Encrypt Overview, su cryptologie.net. URL consultato il 28 febbraio 2016.
  19. ^ (EN) ACME Specification, su GitHub. URL consultato il 28 febbraio 2016.
  20. ^ (EN) Automatic Certificate Management Environment (ACME), su ietf.org. URL consultato il 28 febbraio 2016.
  21. ^ (EN) Boulder LICENCE (TXT), su GitHub. URL consultato il 28 febbraio 2016.
  22. ^ (EN) letsencrypt LICENCE (TXT), su GitHub. URL consultato il 28 febbraio 2016.
  23. ^ (EN) Read the Docs - Let's Encrypt plugins, su Read the docs. URL consultato il 28 febbraio 2016.

Voci correlate

Collegamenti esterni