Qu'est ce que let's encrypt ?

Qu'est ce que let's encrypt ?

Pour le retour des gros sujets après "un peu" d'attente, parlons certificats, parlons let's encrypt et plus particulièrement parlons challenge let's encrypt.

Commençons par expliquer d'où ça vient

Nous sommes en 2012, l'Espagne remporte l'euro, le CERN annonce la découverte du boson de Higgs et Barack Obama est réélu président des Etats-unis. Côté les tablettes tactiles sont en pleine explosion et tout le monde prévoit qu'elles vont remplacer les PC, Apple lance l'iphone 5 et le bitcoin vaut entre 2 et 10€.

Côté sécurité, l'IETF (Internet Engineering Task Force littéralement le groupe de travail pour l'ingénierie de l'internet) poussé notamment par google réfléchit à l'implémentation aux spécifications de la norme HTTP/2 et si celui-ci doit, ou non, rendre le chiffrement obligatoire grâce à TLS.

Un gros problème se pose, les certificats sont payant, d'ailleurs pas forcément donnés, la mise en place généralement complexe et un fournisseur (aussi appelé autorité de certification) est nécessaire.

Pour parler plus technique, vous devez créer une demande sur votre serveur (appelé CSR) ainsi qu'une clef privée qui vous permettra de déchiffrer les messages, envoyer cette CSR à une autorité de certification, payer la dite autorité pour qu'elle vous fournisse un certificat dont elle certifiera la validité auprès des navigateurs et autres logiciels se basant sur les certificats.

Toutefois les certificats sont nécessaires pour deux raisons :

  • L'authentification, c-à-d la validation que le site est bien celui qu'il prétend être.
  • Le chiffrement qui permet de s'assurer que personne n'est en mesure d'intercepter les communications entre le site et l'utilisateur.

A cette question de l'obligation d'utiliser tls dans HTTP/2 Josh Aas et Eric Rescorla, deux développeurs de Mozilla, eux pensent que c'est nécessaire. C'est pourquoi ils décident de se mettre au travail et de commencer le projet Let's encrypt ( littéralement "Allons chiffrer" ou "Chiffrons").

Le projet let's encrypt consisterait en une autorité de certification gratuite et automatisée. Celle-ci voit le jour en 2014, et rencontre tout de suite un réel succès. A tel point qu'en 2019, Let's encrypt génère plus d'un certificat sur deux dans le monde.

Let's encrypt a obtenu en octobre 2015 un accord avec l'autorité de certification idenTrust lui permettant d'être reconnu par l'intégralité des navigateurs existants. Ce qui lui permet d'avoir la confiance des autres autorités de certification.

Comment ca fonctionne ?

Le fonctionnement est assez simple, vous installez sur votre serveur un agent permettant la génération du certificat que vous exécutez. Celui-ci valide auprès des serveurs let's encrypt que vous êtes bien qui vous prétendez être, et vous fournis votre certificat. Il vous suffit ensuite de recharger la configuration de votre serveur pour que le nouveau certificat soit utilisé. Cette communication entre l'agent et les serveurs let's encrypt est automatisé par le protocole ACME.

Pour résumer :
1 – L’agent doit préciser à l’autorité de certification que sa demande est légitime en prouvant qu’il contrôle le domaine en question. Cette étape est la validation du domaine
2 – L’agent forge la requête d’administration souhaitée sur le certificat (obtention, renouvellement, révocation). Cette étape est la délivrance du certificat

Oui mais concrétement ?

1) Le défi

Let's encrypt lance un défi au client ACME. Celui-ci doit prouver qu'il possède bien le domaine. Pour cela deux façons de faire :

  • Créer un enregistrement DNS sur l'adresse du site
  • Créer une page http (.well-know) sur le site


Source image : https://letsencrypt.org/fr/how-it-works/

2) L'identification par clef

Le client créé une paire de clef privée/publique avec le serveur et communique la clef publique à let's encrypt Le client chiffre un nonce (nombre abritraire unique) et le transmets au serveur let's encrypt qui déchiffre avec la clef publique pour vérifier que celle-ci est valide.


Source image : https://letsencrypt.org/fr/how-it-works/

Si l'étape 1 et 2 sont valide, l'agent est autorisé à gerer les certificats liées à son domaine.

3) Délivrance du certificat

La suite se fait de manière assez classique dans la gestion des certificats. L'agent va créer une demande de certificat appelée CSR incluant une signature par la clef privée correspondant à la clef publique présente dans la CSR. Le tout étant signé par la clef privée de l'agent correspondant à la clef publique autorisé pour le domaine sur le serveur let's encrypt (voir étape 2). Cela permet à let's encrypt de vérifier que l'agent est autorisé.

Une fois les deux signatures vérifiées, il délivre le certificat avec la clef publique.


Source image : https://letsencrypt.org/fr/how-it-works/

4) La révocation

L'agent signe une demande de révocation avec la clef autorisée pour le domaine et le serveur let's encrypt vérifie que l'agent est autorisé a révoqué la clef. Si c'est le cas elle transmet à l'agent la confirmation de la révocation ainsi qu'aux différentes parties prenantes (Navigateur par exemple).


Source image : https://letsencrypt.org/fr/how-it-works/

Pour la partie technique, je vous mets bientôt une seconde partie.

Source :
https://fr.wikipedia.org/wiki/Let's_Encrypt
https://torquemag.io/2016/10/why-lets-encrypt-has-completely-changed-the-ssl-landscape/
https://en.wikipedia.org/wiki/Let's_Encrypt
https://www.linux.com/news/lets-encrypt-every-server-internet-should-have-certificate
https://opensource.com/business/16/8/lets-encrypt
https://blog.mosanweb.com/blog/2018/03/20/comment-fonctionne-lets-encrypt/
https://letsencrypt.org/fr/how-it-works/
http://blog.xebia.fr/2016/01/06/vers-un-web-https-avec-lets-encrypt/
https://letsencrypt.org/fr/how-it-works/

Ajouter un commentaire

Articles en relation