Une introduction à Let’s Encrypt

introduction

Let’s Encrypt est une autorité de certification ouverte et automatisée qui utilise le protocoleACME (Automatic Certificate Management Environment ) pour fournir des certificats TLS / SSL gratuits à tout client compatible. Ces certificats peuvent être utilisés pour chiffrer les communications entre votre serveur Web et vos utilisateurs. Il existe des dizaines de clients disponibles, écrits dans divers langages de programmation, et de nombreuses intégrations avec des outils, des services et des serveurs d'administration populaires.

Le client ACME le plus populaire,Certbot, est maintenant développé parthe Electronic Frontier Foundation. En plus de vérifier la propriété du domaine et de récupérer les certificats, Certbot peut configurer automatiquement TLS / SSL sur les serveurs WebApache etNginx.

Ce didacticiel aborde brièvement les autorités de certification et le fonctionnement de Let’s Encrypt, puis passe en revue quelques clients ACME populaires.

Qu'est-ce qu'une autorité de certification?

Les autorités de certification (CA) sont des entités qui signent de manière cryptographique des certificats TLS / SSL pour attester de leur authenticité. Les navigateurs et les systèmes d'exploitation disposent d'une liste d'autorités de certification approuvées qu'ils utilisent pour vérifier les certificats de site.

Jusqu'à récemment, la plupart des CA étaient des opérations commerciales qui facturaient de l'argent pour leurs services de vérification et de signature. Let’s Encrypt a rendu ce processus gratuit pour les utilisateurs en automatisant complètement la procédure et en faisant appel au parrainage et aux dons pour financer l’infrastructure nécessaire.

Pour plus d'informations sur les certificats et les différents types d'autorités de certification, vous pouvez lire «https://www.digitalocean.com/community/tutorials/a-comparison-of-let-s-encrypt-commercial-and-private-certificate -authorities-and-self-signed-ssl-certificates [Comparaison des autorisations de cryptage, des autorités de certification commerciales et privées et des certificats SSL auto-signés]. "

Nous verrons ensuite comment Let Encrypt procède à la vérification automatique du domaine.

Comment Let Encrypt Works

Le protocole ACME de Let Encrypt définit la manière dont les clients communiquent avec ses serveurs pour demander des certificats, vérifier la propriété du domaine et télécharger des certificats. Il est actuellement en train de devenir un standard officiel deIETF.

Let’s Encrypt propose des certificatsdomain-validated, ce qui signifie qu’ils doivent vérifier que la demande de certificat provient d’une personne qui contrôle réellement le domaine. Pour ce faire, ils envoient au client un jeton unique, puis émettent une requête Web ou DNS pour récupérer une clé dérivée de ce jeton.

Par exemple, avec le défi basé sur HTTP, le client calculera une clé à partir du jeton unique et un jeton de compte, puis placera les résultats dans un fichier devant être servi par le serveur Web. Les serveurs Let’s Encrypt récupèrent ensuite le fichier àhttp://example.com/.well-known/acme-challenge/token. Si la clé est correcte, le client a prouvé qu'il pouvait contrôler les ressources surexample.com, et le serveur signera et retournera un certificat.

Le protocole ACME définit plusieurs défis que votre client peut utiliser pour prouver la propriété du domaine. Le défi HTTPS est similaire à HTTP, sauf qu'au lieu d'un fichier texte, le client fournit un certificat auto-signé avec la clé incluse. Le défi DNS recherche la clé dans un enregistrement DNS TXT.

Le client Certbot Let Encrypt

Certbot est de loin le client le plus populaire de Let’s Encrypt. Il est inclus dans la plupart des principales distributions Linux et inclut des fonctionnalités pratiques de configuration automatique pour Apache et Nginx. Une fois installé, récupérer un certificat et mettre à jour votre configuration Apache peuvent se faire de la manière suivante:

sudo certbot --apache -d www.example.com

Certbot posera quelques questions, lancera le défi, téléchargera des certificats, mettra à jour votre configuration Apache et rechargera le serveur. Vous devriez alors pouvoir naviguer vershttps://www.example.com avec votre navigateur Web. Un verrou vert apparaît pour indiquer que le certificat est valide et que la connexion est cryptée.

Comme les certificats Let’s Encrypt ne sont valides que pendant quatre-vingt-dix jours, il est important de mettre en place un processus de renouvellement automatisé. La commande suivante va renouveler tous les certificats sur une machine:

sudo certbot renew

Mettez la commande ci-dessus dans une crontab pour l'exécuter tous les jours et les certificats seront automatiquement renouvelés trente jours avant leur date d'expiration. Si un certificat a été initialement créé avec les options--apache ou--nginx, Certbot rechargera le serveur après un renouvellement réussi.

Si vous souhaitez en savoir plus sur cron et les crontabs, veuillez vous reporter au tutoriel «https://www.digitalocean.com/community/tutorials/how-to-use-cron-to-automate-tasks-on-a -vps [Comment utiliser Cron pour automatiser des tâches]. ”

Autres clients

Le protocole ACME étant ouvert et bien documenté, de nombreux autres clients ont été développés. Let’s Encrypt maintient unlist of ACME clients sur son site Web. La plupart des autres clients ne disposent pas des fonctionnalités de configuration automatique du serveur Web de Certbot, mais ils ont également d'autres fonctionnalités susceptibles de vous intéresser:

  • Il existe un client écrit dans la plupart des langages de programmation, y compris les scripts shell, Go et Node.js. Cela peut être important si vous créez des certificats dans un environnement contraint et que vous préférez ne pas inclure Python et d’autres dépendances de Certbot.

  • Certains clients peuvent s'exécuter sans les privilègesroot. C’est généralement une bonne idée d’exécuter le moins de code privilégié possible.

  • De nombreux clients peuvent automatiser le défi basé sur DNS en utilisant l’API de votre fournisseur DNS pour créer automatiquement l’enregistrement TXT approprié. Le défi DNS permet des cas d'utilisation plus difficiles, tels que le chiffrement de serveurs Web qui ne sont pas accessibles publiquement.

  • Certains clients sont en fait intégrés dans des serveurs Web, des serveurs mandataires inversés ou des équilibreurs de charge, ce qui facilite grandement la configuration et le déploiement.

Certains des clients les plus populaires sont:

  • lego: écrit en Go, lego est une installation binaire à un fichier et prend en charge de nombreux fournisseurs DNS lors de l'utilisation du défi DNS

  • acme.sh: acme.sh est un script shell simple qui peut s'exécuter en mode non privilégié, et également interagir avec plus de 30 fournisseurs DNS

  • Caddy: Caddy est un serveur Web complet écrit en Go avec prise en charge intégrée de Let’s Encrypt.

De nombreux autres clients sont disponibles et de nombreux autres serveurs et services automatisent la configuration TLS / SSL en intégrant la prise en charge de Let Encrypt.

Conclusion

Nous avons passé en revue les principes de base du fonctionnement de Let’s Encrypt et discuté des logiciels clients disponibles. Si vous souhaitez obtenir des instructions plus détaillées sur l’utilisation de Let’s Encrypt avec divers logiciels, les didacticiels suivants constituent un bon point de départ: