Introduction
Let’s Encrypt est une autorité de certification ouverte et automatisée qui utilise le protocole ACME (Automatic Certificate Management Environment) pour fournir gratuitement des certificats TLS/SSL à tout client compatible. Ces certificats peuvent être utilisés pour chiffrer la communication 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 administratifs populaires, des services et des serveurs.
Le client ACME le plus populaire, Certbot, est désormais développé par l’Electronic Frontier Foundation. En plus de vérifier la propriété du domaine et de récupérer les certificats, Certbot peut configurer automatiquement le TLS/SSL sur les serveurs web Apache et Nginx.
Ce tutoriel discutera brièvement des autorités de certification et du fonctionnement de Let’s Encrypt, puis examinera quelques clients ACME populaires.
Qu’est-ce qu’une autorité de certification ?
Les autorités de certification (CA) sont des entités qui signent cryptographiquement les certificats TLS/SSL pour garantir leur authenticité. Les navigateurs et les systèmes d’exploitation disposent d’une liste de CA de confiance qu’ils utilisent pour vérifier les certificats des sites.
Jusqu’à récemment, la plupart des CA étaient des opérations commerciales qui facturaient 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 s’appuyant sur le sponsoring et les 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 « Une comparaison entre Let’s Encrypt, les autorités de certification commerciales et privées, et les certificats SSL auto-signés. »
Ensuite, nous examinerons comment Let’s Encrypt effectue la vérification de domaine automatisée.
Fonctionnement de Let’s Encrypt
Le protocole ACME de Let’s Encrypt définit comment 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 cours de processus pour devenir une norme officielle de l’IETF.
Let’s Encrypt propose des certificats validés par domaine, ce qui signifie qu’ils doivent vérifier que la demande de certificat provient d’une personne qui contrôle réellement le domaine. Ils le font en envoyant au client un jeton unique, puis en effectuant une demande 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 va calculer une clé à partir du jeton unique et d’un jeton de compte, puis placer les résultats dans un fichier à servir par le serveur web. Les serveurs Let’s Encrypt récupèrent ensuite le fichier à l’adresse http://example.com/.well-known/acme-challenge/token
. Si la clé est correcte, le client a prouvé qu’il peut contrôler les ressources sur example.com
, et le serveur signera et renverra 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 va provisionner un certificat auto-signé avec la clé incluse. Le défi DNS recherche la clé dans un enregistrement TXT DNS.
Le Client Certbot Let’s Encrypt
Certbot est de loin le client Let’s Encrypt le plus populaire. Il est inclus dans la plupart des distributions Linux majeures et comprend des fonctionnalités de configuration automatique pratiques pour Apache et Nginx. Une fois installé, l’obtention d’un certificat et la mise à jour de votre configuration Apache peuvent être effectuées comme suit :
Certbot posera quelques questions, lancera le défi, téléchargera les certificats, mettra à jour votre configuration Apache et rechargera le serveur. Vous devriez ensuite pouvoir naviguer vers https://www.example.com
avec votre navigateur web. Un cadenas vert apparaîtra indiquant que le certificat est valide et que la connexion est chiffrée.
Étant donné que 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 automatique. La commande suivante renouvellera tous les certificats sur une machine :
Ajoutez la commande ci-dessus dans un crontab pour l’exécuter tous les jours, et les certificats seront automatiquement renouvelés trente jours avant leur 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 référer au tutoriel « Comment utiliser Cron pour automatiser les tâches« .
Autres clients
Étant donné que le protocole ACME est ouvert et bien documenté, de nombreux clients alternatifs ont été développés. Let’s Encrypt maintient une liste des clients ACME sur leur site web. La plupart des autres clients n’ont pas les fonctionnalités de configuration automatique du serveur web de Certbot, mais ils offrent d’autres fonctionnalités qui pourraient 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 pourrait ê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 privilèges root. Il est généralement conseillé d’exécuter le moins de code privilégié possible
- De nombreux clients peuvent automatiser le défi basé sur le DNS en utilisant l’API de votre fournisseur DNS pour créer automatiquement l’enregistrement TXT approprié. Le défi DNS permet de réaliser certains cas d’utilisation plus complexes, tels que le chiffrement des serveurs Web qui ne sont pas accessibles publiquement.
- Certains clients sont en fait intégrés aux serveurs Web, aux reverse proxies ou aux équilibreurs de charge, ce qui facilite encore plus la configuration et le déploiement
Certains des clients les plus populaires sont :
- lego : Écrit en Go, lego est une installation binaire en un seul fichier, et prend en charge de nombreux fournisseurs DNS lors de l’utilisation du défi DNS
- acme.sh : acme.sh est un simple script shell qui peut s’exécuter en mode non privilégié, et interagir également avec plus de 30 fournisseurs DNS
- Caddy : Caddy est un serveur Web complet écrit en Go avec une 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 le support de Let’s Encrypt.
Conclusion
Nous avons examiné les bases du fonctionnement de Let’s Encrypt et discuté de certains des logiciels clients disponibles. Si vous souhaitez des instructions plus détaillées sur l’utilisation de Let’s Encrypt avec divers logiciels, les tutoriels suivants sont un bon point de départ :
Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-let-s-encrypt