Let's Encrypt

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca
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

Let's Encrypt è una certification authority che automatizza gratuitamente la creazione, la validazione, il rilascio ed il rinnovo di certificati X.509 per il protocollo TLS[1].

Il client di Let's Encrypt è software libero.[2] La lista dei certificati rilasciati è pubblica.[3][4]

Lo scopo principale del progetto è quello di riuscire a cifrare tutte le comunicazioni sul World Wide Web[5]. 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 su un sistema unix-like sono sufficienti pochi secondi per configurare il supporto ad HTTPS[6]).

Il client di Let's Encrypt è incluso nei repository ufficiali di Debian, al fine di favorire maggiormente la diffusione del client [7]. La maggior parte dei browser fa affidamento su Let's Encrypt per deprecare l'utilizzo di connessioni HTTP non cifrate[8][9].

Let's Encrypt rilascia solamente certificati di tipo Domain Validated, non è previsto il rilascio di certificati di tipo Organization Validation o Extended Validation[10]. Dal 13 marzo 2018 sono supportati ufficialmente anche i certificati wildcard usati per mettere in sicurezza, con lo stesso certificato di dominio, anche i sottodomini.

Il progetto Let's Encrypt nasce nel 2012 da parte di due impiegati di Mozilla, Josh Aas e Eric Rescorla insieme a Peter Eckersley della Electronic Frontier Foundation e J. Alex Halderman della Università del Michigan. L'Internet Security Research Group, l'ente che attualmente sta seguendo lo sviluppo di Let's Encrypt è entrata nel progetto nel maggio 2013.

Il 18 novembre 2014, Let's Encrypt viene annunciato ufficialmente al pubblico.

Il 28 gennaio 2015, il protocollo ACME viene presentato all'IETF per essere ufficialmente standardizzato[11]. Il 9 aprile 2015 lo ISRG e la Linux Foundation annunciano ufficialmente la loro collaborazione[12]. All'inizio del giugno 2015 vengono generati il certificato root ed il certificato intermedio di Let's Encrypt, mentre il 16 giugno vengono annunciate ufficialmente le scadenze che indicano la settimana del 27 luglio come obiettivo per il rilascio del primo certificato e la settimana del 14 settembre 2015 come papabile per il rilascio pubblico del servizio[13]. Il 7 agosto 2015 queste scadenze vengono riviste per permettere di fornire maggiore stabilità e sicurezza al sistema, facendo slittare alla settimana del 7 settembre 2015 il rilascio del primo certificato e alla settimana del 16 novembre il rilascio pubblico del servizio[14].

Il 14 settembre 2015, Let's Encrypt rilascia il suo primo certificato, per il dominio helloworld.letsencrypt.org. Nello stesso giorno la ISRG invia la richiesta a Mozilla, Microsoft, Google ed Apple per i loro root program, al fine di rendere i certificati di Let's Encrypt riconosciuti dai principali browser[15].

Il 19 ottobre 2015, il certificato intermedio di Let's Encrypt diventa 'cross-signed' grazie al supporto di IdenTrust. In questo modo tutti i certificati finora rilasciati da Let's Encrypt risultano riconosciuti dai principali browser[16].

Il 12 novembre 2015, Let's Encrypt annuncia che il rilascio per il grande pubblico sarebbe slittato e che avrebbe avviato il programma di beta pubblica il 3 di dicembre dello stesso anno[17].

Il 3 dicembre 2015, Let's Encrypt annuncia ufficialmente di essere entrato nella fase di beta pubblica[18][19]

Dal 12 aprile 2016 Let's Encrypt esce dalla beta pubblica, dichiarando di aver validato 1,7 milioni di certificati per 3,8 milioni di siti web.[20]

Schermata di selezione dei domini
Schermata di successo

Nel giugno 2015, Let's Encrypt ha generato un certificato root RSA che si trovava su un hardware security module (HSM) poi messo offline.[21] Il certificato root è stato utilizzato per firmare due certificati intermedi, i quali sono a loro volta cross-signed da parte di IdenTrust[21]. 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[21].

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[16].

Gli sviluppatori di Let's Encrypt prevedono di generare anche un certificato root ECDSA entro la prima parte del 2016[21][22].

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 challenge che il proprietario del dominio deve risolvere per provare di essere il responsabile del dominio[23].

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

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[24].

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

Implementazioni software

[modifica | modifica wikitesto]

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)[28], 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 certbot, è scritto in Python ed è rilasciato con licenza Apache[29]. 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[30].

Soggetti coinvolti

[modifica | modifica wikitesto]

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 partner vi sono anche la certification authority IdenTrust, la Università del Michigan, la Stanford School of Law, la Linux Foundation e Facebook[31].

Technical Advisory Board

[modifica | modifica wikitesto]
  1. ^ (EN) Peter Eckersley, Launching in 2015: A Certificate Authority to Encrypt the Entire Web, su Electronic Frontier Foundation. URL consultato l'11 maggio 2018.
  2. ^ (EN) Let's Encrypt Client License (TXT), su GitHub. URL consultato il 28 febbraio 2016.
  3. ^ (EN) Certificates, su letsencrypt.org. URL consultato il 18 aprile 2016.
  4. ^ (EN) Comodo Certificate Search, su crt.sh (archiviato dall'url originale l'8 settembre 2018).
  5. ^ (EN) About Let's Encrypt, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  6. ^ (EN) EFF wants to make HTTPS the default protocol, su SD Times. URL consultato il 28 febbraio 2016.
  7. ^ (EN) Package: letsencrypt, su packages.debian.org. URL consultato il 15 aprile 2016.
  8. ^ (EN) Deprecating Non-Secure HTTP, su blog.mozilla.org. URL consultato il 28 febbraio 2016.
  9. ^ (EN) Marking HTTP as non secure, su chromium.org. URL consultato il 28 febbraio 2016.
  10. ^ (EN) Let's Encrypt FAQ, su community.letsencrypt.org. URL consultato il 28 febbraio 2016.
  11. ^ (EN) History for draft-barnes-acme-04, su datatracker.ietf.org. URL consultato il 28 febbraio 2016.
  12. ^ (EN) Let's Encrypt Becomes Linux Foundation Collaborative Project [collegamento interrotto], su eweek.com. URL consultato il 28 febbraio 2016.
  13. ^ (EN) Let's Encrypt Launch Schedule - Let's Encrypt - Free SSL/TLS Certificates, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  14. ^ (EN) Updated Let's Encrypt Launch Schedule - Let's Encrypt - Free SSL/TLS Certificates, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  15. ^ (EN) First Let's Encrypt Free Certificate Goes Live, su threatpost.com. URL consultato il 28 febbraio 2016.
  16. ^ a b (EN) Let's Encrypt is Trusted, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  17. ^ (EN) Public Beta: December 3, 2015 - Let's Encrypt - Free SSL/TLS Certificates, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  18. ^ (EN) Entering Public Beta, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  19. ^ (EN) Public Beta timing, su letsencrypt.org.
  20. ^ (EN) Leaving Beta, New Sponsors, su letsencrypt.org, 12 aprile 2016. URL consultato il 15 aprile 2016.
  21. ^ a b c d (EN) Let's Encrypt Root and Intermediate Certificates, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  22. ^ (EN) Elliptic Curve Cryptography (ECC) Support, su community.letsencrypt.org. URL consultato il 28 febbraio 2016.
  23. ^ a b (EN) How it works, su letsencrypt.org. URL consultato il 28 febbraio 2016.
  24. ^ (EN) DNS challenge is in staging, su community.letsencrypt.org. URL consultato il 28 febbraio 2016.
  25. ^ (EN) Let's Encrypt Overview, su cryptologie.net. URL consultato il 28 febbraio 2016.
  26. ^ (EN) ACME Specification, su github.com. URL consultato il 28 febbraio 2016.
  27. ^ (EN) Automatic Certificate Management Environment (ACME), su tools.ietf.org, IETF. URL consultato il 28 febbraio 2016.
  28. ^ (EN) Boulder LICENSE (TXT), su github.com. URL consultato il 28 febbraio 2016.
  29. ^ (EN) letsencrypt LICENSE (TXT), su github.com. URL consultato il 28 febbraio 2016.
  30. ^ (EN) Read the Docs - Let's Encrypt plugins, su letsencrypt.readthedocs.org. URL consultato il 28 febbraio 2016 (archiviato dall'url originale il 26 febbraio 2016).
  31. ^ (EN) Current Sponsors, su letsencrypt.org. URL consultato il 28 febbraio 2016.

Voci correlate

[modifica | modifica wikitesto]

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]