Recherche de site Web

Comment gérer le SSL Let's Encrypt avec les commandes Certbot


Lorsque quelqu'un visite votre site web, son navigateur et votre serveur échangent des informations. Sans chiffrement, cette conversation se fait en texte clair, ce qui signifie que toute personne surveillant le réseau pourrait tout lire : les informations de connexion, les messages personnels, les informations de paiement, tout cela.

Un certificat SSL résout ce problème en activant HTTPS, qui chiffre toutes les données entre le navigateur et votre serveur. La petite icône de cadenas dans la barre d'adresse de votre navigateur ? Cela vous indique que la connexion est chiffrée et sécurisée.

Pendant des années, obtenir un certificat SSL signifiait payer une autorité de certification chaque année et passer par un processus d'installation manuel fastidieux. Puis Let’s Encrypt est arrivé et a tout changé. C'est une autorité de certification gratuite et automatisée qui existe pour un seul objectif : faire des connexions chiffrées la norme sur l'ensemble du web.

Mais voici le truc : bien que les certificats Let’s Encrypt soient gratuits, ils expirent tous les 90 jours. Gérer les renouvellements manuellement serait un cauchemar, ce qui est exactement pourquoi Certbot existe, un outil en ligne de commande qui automatise l'ensemble du processus d'obtention, d'installation et de renouvellement des certificats Let’s Encrypt.

Dans ce guide, nous allons passer en revue tout ce que vous devez savoir sur l'utilisation de Certbot, depuis votre première installation de certificat jusqu'à la compréhension des processus de renouvellement, le tout expliqué de manière à être compréhensible même si vous débutez avec les serveurs Linux.

Installer Certbot sur Linux

Le processus d'installation de certbot varie légèrement selon votre distribution Linux, mais il est simple dans l'ensemble.

Pour les systèmes basés sur Debian, vous voudrez d'abord vous assurer que votre système est à jour :

sudo apt update
sudo apt upgrade

Installez ensuite Certbot ainsi que le plugin pour votre serveur web, si vous utilisez nginx.

sudo apt install certbot python3-certbot-nginx

Ou si vous utilisez Apache.

sudo apt install certbot python3-certbot-apache

Pour les distributions basées sur RHEL, le processus est similaire mais utilise dnf à la place :

sudo dnf install certbot python3-certbot-nginx    # For Nginx
sudo dnf install certbot python3-certbot-apache   # For Apache

Les plugins de serveur web sont importants car ils permettent à Certbot de configurer automatiquement votre serveur pour HTTPS. Sans eux, vous devriez modifier manuellement les fichiers de configuration, ce qui est exactement le type de travail fastidieux que Certbot est conçu pour éliminer.

Obtenir votre premier certificat SSL

Une fois Certbot installé, obtenir un certificat est remarquablement simple.

Pour un serveur Nginx, la commande ressemble à ceci :

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

Si vous utilisez Apache, la commande est presque identique :

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

Lorsque vous exécutez la commande ci-dessus pour la première fois, Certbot vous demandera votre adresse e-mail, ce qui est important à savoir : alors que Let’s Encrypt envoyait auparavant des notifications d'expiration via cet e-mail, ils ont depuis arrêté ce service afin de minimiser la conservation des données. Par conséquent, vous devez vous appuyer sur un processus de renouvellement automatisé fiable ou configurer votre propre surveillance tierce pour les alertes d'expiration.

Après cela, Certbot fait son travail : il communique avec Let's Encrypt, prouve que vous contrôlez le domaine, obtient le certificat et modifie votre configuration Nginx pour utiliser HTTPS.

Comprendre le renouvellement des certificats SSL

Comme je l'ai mentionné plus tôt, les certificats Let’s Encrypt expirent tous les 90 jours, il est donc essentiel de mettre en place un processus de renouvellement automatisé. Un minuteur systemd peut gérer cela en vérifiant deux fois par jour les certificats qui approchent de leur expiration. Lorsqu'un certificat a moins de 30 jours restants, Certbot le renouvelle automatiquement sans nécessiter d'intervention manuelle.

Vous pouvez tester ce processus de renouvellement sans réellement rien renouveler :

sudo certbot renew --dry-run

Le drapeau --dry-run simule le processus de renouvellement, ce qui est utile pour s'assurer que tout est configuré correctement. Si la commande réussit, vous pouvez être sûr que les renouvellements automatiques fonctionneront le moment venu.

Pour voir quand vos certificats expirent et vérifier leur statut de renouvellement :

sudo certbot certificates

Vous pouvez vérifier l'état du minuteur pour confirmer qu'il est actif :

sudo systemctl status certbot.timer

Gestion de plusieurs certificats SSL

Au fur et à mesure que vous ajoutez plus de domaines ou de sous-domaines à votre serveur, vous accumulerez plusieurs certificats, mais certbot rend cela étonnamment gérable.

Pour ajouter un nouveau domaine à un certificat existant :

sudo certbot --nginx -d example.com -d www.example.com -d blog.example.com

Si vous souhaitez obtenir un certificat complètement séparé pour un domaine différent :

sudo certbot --nginx -d another-domain.com -d www.another-domain.com

Chaque certificat est géré indépendamment, mais tous les renouvellements se font automatiquement par le même processus de renouvellement.

Renouveler les certificats SSL manuellement

Bien que le renouvellement automatique soit tout l'intérêt d'utiliser Certbot, il y a des moments où vous pourriez vouloir forcer un renouvellement manuellement. Peut-être que vous avez effectué des modifications de configuration et souhaitez les tester, ou peut-être êtes-vous en train de résoudre un problème.

Pour renouveler tous les certificats arrivant à échéance, exécutez la commande suivante, qui ne renouvellera que les certificats dont l'expiration est dans les 30 jours et les certificats ayant plus de 30 jours restants ne seront pas renouvelés.

sudo certbot renew

Si vous devez forcer le renouvellement indépendamment de la date d'expiration :

sudo certbot renew --force-renewal

Consultation de vos certificats SSL

Parfois, vous devez voir les détails des certificats que vous avez installés, par exemple le nom de chaque certificat, les domaines qu'il couvre, sa date d'expiration et les chemins de fichiers où le certificat et la clé privée sont stockés.

sudo certbot certificates

Les fichiers de certificat réels se trouvent dans /etc/letsencrypt/live/, avec des répertoires distincts pour chaque certificat. À l'intérieur, vous trouverez des liens symboliques vers les certificats réels, qui sont versionnés dans le répertoire archive.

Révocation des certificats SSL

Si la clé privée d'un certificat est compromise, ou si vous n'avez plus besoin d'un certificat, vous devez le révoquer, et cela indique immédiatement aux navigateurs et autres clients que le certificat ne doit plus être considéré comme fiable, même s'il n'a pas encore expiré.

Pour révoquer un certificat :

sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem

Vous devrez spécifier le chemin vers le fichier de certificat que vous souhaitez révoquer.

sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem --delete-after-revoke

Certbot communiquera avec Let’s Encrypt pour révoquer le certificat et, éventuellement, nettoyer les fichiers locaux.

Supprimer les certificats SSL sans les révoquer

Parfois, vous voulez retirer un certificat de votre système sans le révoquer. Peut-être que vous avez déplacé un domaine vers un autre serveur, ou que vous avez obtenu un certificat par erreur et que vous ne l'avez jamais utilisé.

sudo certbot delete --cert-name example.com

Cela supprime les fichiers de certificat de votre système mais ne révoque pas le certificat avec Let's Encrypt. Le certificat reste valide s'il est utilisé ailleurs, mais Certbot cessera de le gérer sur ce serveur.

Résolution des problèmes de renouvellement de certificat Certbot

Même avec l'automatisation de Certbot, vous pourriez parfois rencontrer des problèmes, et voici les plus courants ainsi que la façon de les résoudre.

Si le renouvellement du certificat échoue, vérifiez que votre serveur web fonctionne et est accessible depuis Internet, car Let’s Encrypt doit atteindre votre serveur sur le port 80 ou 443 pour vérifier la propriété du domaine.

Vous pouvez vérifier les journaux de renouvellement pour des messages d'erreur spécifiques :

sudo cat /var/log/letsencrypt/letsencrypt.log

Ces journaux montrent exactement ce que Certbot a tenté et où il a échoué, ce qui vous indique généralement directement le problème.

Si la configuration de votre serveur web est d'une manière ou d'une autre perturbée, Certbot peut parfois restaurer la configuration originale :

sudo certbot --nginx rollback

Cela annule les modifications effectuées par Certbot, bien que cela soit rarement nécessaire si vous utilisez les options de configuration automatique.

Comprendre les limites de taux

Let’s Encrypt a des limites de taux pour prévenir les abus. Pour un usage normal, vous ne les atteindrez jamais, mais il vaut la peine de savoir qu'elles existent. Vous pouvez demander jusqu'à 50 certificats par domaine enregistré par semaine, et chaque certificat peut couvrir jusqu'à 100 sous-domaines.

Si vous testez ou apprenez, utilisez largement le flag --dry-run, qui simule tout le processus sans réellement demander de certificats, de sorte que cela ne compte pas contre les limites de fréquence.

sudo certbot renew --dry-run

Maintenir Certbot à jour

Comme tout logiciel, Certbot reçoit des mises à jour qui corrigent des bugs et ajoutent des fonctionnalités, il est donc important de maintenir vos mises à jour certbot via votre gestionnaire de paquets habituel :

sudo apt update
sudo apt upgrade certbot
Aller au-delà de l'utilisation de base

Une fois que vous êtes à l'aise avec la gestion de certificats de base, Certbot propose des options avancées qui valent la peine d'être explorées. Vous pouvez utiliser la validation DNS au lieu de la validation HTTP, ce qui vous permet d'obtenir des certificats même pour les serveurs non accessibles publiquement sur le port 80 ou 443.

Vous pouvez configurer des hooks de renouvellement personnalisés pour exécuter des scripts lorsque les certificats sont renouvelés, ce qui est utile pour redémarrer des services ou mettre à jour des configurations. Vous pouvez même obtenir des certificats wildcard qui couvrent tous les sous-domaines en une seule fois.

Mais pour la plupart des cas d'utilisation, les commandes simples que nous avons couvertes gèrent tout ce dont vous avez besoin. Certbot transforme un processus autrefois complexe et sujet aux erreurs en quelques commandes simples qui fonctionnent simplement.