# Let's Encrypt

Let's Encrypt (abrégé LE) est une autorité de certification lancée le 3 décembre 2015 (Bêta Version Publique). Cette autorité fournit des certificats gratuits X.509 pour le protocole cryptographique TLS au moyen d'un processus automatisé destiné à se passer du processus complexe actuel impliquant la création manuelle, la validation, la signature, l'installation et le renouvellement des certificats pour la sécurisation des sites internet. En septembre 2016, plus de 10 millions de certificats ont été délivrés.
En février 2017, Let's encrypt était utilisé par 13,70% du total des domaines français enregistrés.
En décembre 2019, Let's encrypt fournit 54,67 % des certificats TLS.

## Présentation

Le projet vise à généraliser l'usage de connexions sécurisées sur l’internet. En supprimant la nécessité de paiement, de la configuration du serveur web, des courriels de validation et de gestion de l'expiration des certificats, le projet est fait pour réduire de manière significative la complexité de la mise en place et de la maintenance du chiffrement TLS. Sur un serveur GNU/Linux, l’exécution de seulement deux commandes est censée être suffisante pour paramétrer le chiffrement HTTPS, l’acquisition et l’installation de certificats, et ceci en quelques dizaines de secondes.
À cette fin, il existe un paquet disponible directement dans les dépôts Debian. Toutefois, le paquet est disponible sur GitHub.

## Parties prenantes

Let's Encrypt est un service fourni par l’Internet Security Research Group (ISRG). Les sponsors principaux sont l’Electronic Frontier Foundation (EFF), la Fondation Mozilla, Akamai, Cisco Systems , PlanetHoster et OVHcloud. D'autres partenaires, tels que l'autorité de certification IdenTrust, l'Université du Michigan (U-M), la Stanford Law School, la Fondation Linux ainsi que Stephen Kent de Raytheon / BBN Technologies et Alex Polvi de CoreOS sont également impliqués dans le projet.

## Technologie

Let's Encrypt est propriétaire d’un certificat racine RSA stocké sur un module matériel de sécurité qui n'est pas utilisé directement. Ce certificat est destiné à être remplacé ultérieurement par un certificat ECDSA qui sera utilisé pour signer deux certificats intermédiaires signés par l’autorité de certification IdenTrust (en). L’un d’entre eux sera utilisé pour signer les certificats délivrés, l’autre comme certificat de secours en cas de problème avec le premier. Les certificats Let's Encrypt peuvent normalement être validés et acceptés par défaut car le certificat IdenTrust sera pré-installé sur les navigateurs internet les plus connus. À long terme, il est prévu que les certificats Let's Encrypt soient pré-installés directement dans les applications.

### Protocole

Le protocole défi-réponse utilisé pour automatiser les inscriptions à cette nouvelle autorité de certification est appelé Automated Certificate Management Environment (ACME). Il implique plusieurs requêtes au serveur web sur le domaine couvert par le certificat. En fonction des réponses, le contrôle des inscrits sur le domaine est assuré (validation de domaine). Afin de réaliser cela, le client logiciel ACME déploie un serveur TLS spécial sur le serveur système qui reçoit des requêtes spéciales émises par le serveur de l'autorité de certificats ACME utilisant l'extension du protocole TLS « Server Name Indication ». Ce processus est seulement accepté pour le premier certificat délivré pour un domaine (Trust On First Use, TOFU). Après cela, une manière alternative de validation via un certificat existant est utilisé. Ainsi, si le contrôle sur un certificat existant est perdu, un certificat doit être acquis à travers une tierce partie afin de pouvoir obtenir un autre certificat Let's Encrypt.
Les processus de validation sont effectués à de multiples reprises sur des chemins réseaux séparés. La vérification des entrées DNS est réalisée de plusieurs points géographiques afin de rendre les attaques d’usurpation DNS plus difficiles à réaliser.
Les interactions de l’ACME sont basées sur l’échange de documents JSON sur des connexions HTTPS. Une ébauche des spécifications est disponible sur GitHub, et une version a été soumise à l’Internet Engineering Task Force comme proposition pour un standard internet.

### Implémentation logicielle

L’autorité de certification consiste en un logiciel appelé Boulder, écrit en Go, qui implémente la partie serveur du protocole ACME. Ce logiciel libre est publié sous la licence Mozilla Public License version 2. Il fournit également une interface de programmation RESTful accessible à travers un canal chiffré TLS.
Un programme de gestion de certificats en Python et sous licence Apache appelé certbot s’installe sur le client (le serveur web d’un inscrit). Ce programme réclame le certificat, effectue le processus de validation de domaine, installe le certificat, configure le chiffrement HTTPS dans le serveur HTTP et dans un second temps, renouvelle le certificat. Après l'installation, l’exécution d'une simple commande suffit à obtenir l’installation d’un certificat valide. Des options additionnelles, comme l’agrafage OCSP ou HTTP Strict Transport Security, peuvent également être activées. Le paramétrage automatique ne s'effectue initialement qu'avec Apache et Nginx.

## Histoire et événements

Les racines de ce projet sont à trouver dans un projet porté par l'Electronic Frontier Foundation en coopération avec l'Université du Michigan et un projet indépendant de Mozilla qui combinèrent en Let's Encrypt. En 2014, l'organisation mère, l'ISRG était fondée. Le démarrage de Let's Encrypt fut annoncé le 18 novembre 2014.
Le 28 janvier 2015, le protocole ACME fut officiellement soumis à l'IETF en vue de sa standardisation. Le 9 avril 2015, l'ISRG et la Fondation Linux annoncèrent leur collaboration. Les certificats racine et intermédiaire furent générés au début juin.
Le 16 juin, la date finale de lancement pour le service fut annoncée. Le premier certificat était attendu dans la semaine du 27 juillet 2015, suivie d'une période de distribution partielle afin de s'assurer de la sécurité et de l'élasticité du service. La disponibilité générale du service était attendu aux alentours de la semaine du 14 septembre 2015, si tout se passait comme prévu. Le 7 août 2015, le calendrier de lancement fut amendé afin de disposer de plus de temps pour s'assurer de la sécurité du système et la stabilité, repoussant le premier certificat distribué à la semaine du 7 septembre 2015.
Le 14 septembre 2015, Let's Encrypt distribue son premier certificat destiné au domaine helloworld.letsencrypt.org. Le même jour, l'ISRG soumet son certificat racine à Mozilla, Microsoft, Google et Apple. Le 19 octobre 2015, une signature croisée avec IdenTrust a été effectuée et les certificats sont désormais reconnus et validés par tous les navigateurs web. Dans la semaine du 16 novembre 2015, le service a été rendu disponible au public.
Le 30 septembre 2021, l'expiration planifiée d'un certificat racine "IdentTrust DST Root CA X3" provoque des problèmes d'accès internet sur des appareils non mis à jour (trop vieux, non supportés).