Comment utiliser le mode autonome de Certbot pour récupérer les certificats SSL de cryptage sur Debian 10

introduction

Let’s Encrypt est un service qui offre des certificats SSL gratuits via une API automatisée. Le client le plus populaire de Let’s Encrypt est le client EFF Certbot.

Certbot propose diverses méthodes pour valider votre domaine, récupérer des certificats et configurer automatiquement Apache et Nginx. Dans ce didacticiel, nous aborderons le mode https://certbot.eff.org/docs/using.html#standalone&_standalone_ mode de Certbot] et comment l’utiliser pour sécuriser d’autres types de services, tels qu’un serveur de messagerie ou un message. courtier comme RabbitMQ.

Nous ne discuterons pas des détails de la configuration SSL, mais lorsque vous aurez terminé, vous obtiendrez un certificat valide qui sera automatiquement renouvelé. De plus, vous pourrez automatiser le rechargement de votre service pour récupérer le certificat renouvelé.

Conditions préalables

Avant de commencer ce tutoriel, vous aurez besoin de:

  • Un serveur Debian 10, un utilisateur non root avec les privilèges + sudo +, et un pare-feu de base, comme indiqué dans https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-10 [ce tutoriel sur l’installation d’un serveur Debian 10].

  • Un nom de domaine pointé sur votre serveur, que vous pouvez réaliser en suivant cette documentation sur la création d’enregistrements DNS sur DigitalOcean.

  • Le port + 80 + * ou * + 443 + doit être * inutilisé * sur votre serveur. Si le service que vous essayez de sécuriser est sur une machine avec un serveur Web occupant ces deux ports, vous devrez utiliser un mode différent, tel que https://certbot.eff.org/docs/using de Certbot. html # webroot [mode webroot] ou mode de challenge basé sur DNS.

Étape 1 - Installation de Certbot

Debian 10 inclut le client Certbot dans son référentiel par défaut et il devrait être suffisamment à jour pour une utilisation de base. Si vous devez faire des challenges basés sur DNS ou utiliser d’autres fonctionnalités Certbot plus récentes, vous devriez plutôt installer à partir du référentiel + buster-backports + comme indiqué par https://certbot.eff.org/lets-encrypt/debianstretch-other [ la documentation officielle de Certbot].

Mettez à jour votre liste de paquets:

sudo apt update

Utilisez + apt + pour installer le paquetage + certbot +:

sudo apt install certbot

Vous pouvez tester votre installation en demandant à + ​​certbot + d’indiquer son numéro de version:

certbot --version
Outputcertbot

Maintenant que Certbot est installé, exécutons-le pour obtenir notre certificat.

Étape 2 - Exécution de Certbot

Certbot doit répondre à un défi cryptographique émis par l’API Let’s Encrypt afin de prouver que nous contrôlons notre domaine. Pour ce faire, il utilise les ports + 80 + (HTTP) ou + 443 + (HTTPS). Ouvrez le port approprié sur votre pare-feu:

sudo ufw allow

Remplacez «+ 443 » ci-dessus si c'est le port que vous utilisez. ` ufw +` affichera la confirmation que votre règle a été ajoutée:

OutputRule added
Rule added (v6)

Nous pouvons maintenant exécuter Certbot pour obtenir notre certificat. Nous allons utiliser l’option + - standalone + pour indiquer à Certbot de relever le défi à l’aide de son propre serveur Web intégré. L’option + - preferred-challenges + indique à Certbot d’utiliser le port + 80 + ou le port + 443 +. Si vous utilisez le port + 80 +, vous utiliserez l’option + - preferred-challenges http +. Pour le port + 443 +, utilisez + - preferred-challenges tls-sni +. Enfin, nous utiliserons l’indicateur + -d + pour spécifier le domaine pour lequel nous demandons un certificat. Vous pouvez ajouter plusieurs options + -d + pour couvrir plusieurs domaines dans un seul certificat.

Nous utiliserons l’option + - preferred-challenges http + pour démontrer, mais vous devriez utiliser l’option qui convient à votre cas d’utilisation. Exécutez la commande suivante avec vos options préférées pour obtenir votre certificat:

sudo certbot certonly --standalone --preferred-challenges  -d

Lors de l’exécution de la commande, vous serez invité à entrer une adresse électronique et à accepter les conditions d’utilisation. Après cela, vous devriez voir un message vous informant que le processus a abouti et où vos certificats sont stockés:

OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
  /etc/letsencrypt/live//fullchain.pem
  Your key file has been saved at:
  /etc/letsencrypt/live//privkey.pem
  Your cert will expire on 2019-08-28. To obtain a new or tweaked
  version of this certificate in the future, simply run certbot
  again. To non-interactively renew *all* of your certificates, run
  "certbot renew"
- Your account credentials have been saved in your Certbot
  configuration directory at /etc/letsencrypt. You should make a
  secure backup of this folder now. This configuration directory will
  also contain certificates and private keys obtained by Certbot so
  making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

  Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
  Donating to EFF:                    https://eff.org/donate-le

Nous avons nos certificats. Voyons ce que nous avons téléchargé et comment utiliser les fichiers avec notre logiciel.

Étape 3 - Configuration de votre application

La configuration de votre application pour SSL dépasse le cadre de cet article, car chaque application a des exigences et des options de configuration différentes, mais examinons ce que Certbot a téléchargé pour nous. Utilisez + ls + pour lister le répertoire qui contient vos clés et certificats:

sudo ls /etc/letsencrypt/live/

Vous verrez la sortie suivante:

Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

Le fichier + README + de ce répertoire contient plus d’informations sur chacun de ces fichiers. Le plus souvent, vous n’avez besoin que de deux de ces fichiers:

  • + privkey.pem +: Ceci est la clé privée du certificat. Cela doit être gardé secret et secret, raison pour laquelle la plupart des répertoires + / etc / letsencrypt + ont des autorisations très restrictives et sont accessibles uniquement à l’utilisateur * root *. La plupart des configurations logicielles se référeront à ceci comme + ssl-certificate-key + ou + + ssl-certificate-key-file +.

  • + fullchain.pem +: Ceci est notre certificat, fourni avec tous les certificats intermédiaires. La plupart des logiciels utiliseront ce fichier pour le certificat réel et y feront référence dans leur configuration avec un nom tel que + ssl-certificate +.

Pour plus d’informations sur les autres fichiers présents, reportez-vous à la section Where are my certificates? Des documents Certbot.

Certains logiciels auront besoin de leurs certificats dans d’autres formats ou emplacements, ou avec d’autres autorisations utilisateur. Il est préférable de tout laisser dans le répertoire + letsencrypt + et de ne pas y modifier les autorisations (les autorisations seront écrasées lors du renouvellement de toute façon), mais parfois ce n’est pas une option. Dans ce cas, vous devrez écrire un script pour déplacer des fichiers et modifier les autorisations en fonction des besoins. Ce script devra être exécuté chaque fois que Certbot renouvellera les certificats, dont nous parlerons ensuite.

Étape 4 - Gestion des renouvellements automatiques de Certbot

Les certificats de Let Encrypt ne sont valides que pendant quatre vingt dix jours. Cela encourage les utilisateurs à automatiser le processus de renouvellement des certificats. Le paquetage + certbot + que nous avons installé s’occupe de cela en ajoutant un script de renouvellement à + ​​/ etc / cron.d +. Ce script est exécuté deux fois par jour et renouvelle tout certificat dans les trente jours suivant son expiration.

Avec nos certificats renouvelés automatiquement, nous avons toujours besoin d’un moyen d’exécuter d’autres tâches après un renouvellement. Nous devons au moins redémarrer ou recharger notre serveur pour récupérer les nouveaux certificats et, comme indiqué à l’étape 3, nous devrons peut-être manipuler les fichiers de certificat de manière à les faire fonctionner avec le logiciel que nous utilisons. C’est l’objet de l’option https://certbot.eff.org/docs/api/hooks.html?highlight=renew_hook#certbot.hooks.renew_hook [+ renew_hook +] de Certbot.

Pour ajouter + renew_hook +, nous devons mettre à jour le fichier de configuration de renouvellement de Certbot. Certbot se souvient de tous les détails de la première récupération du certificat et fonctionnera avec les mêmes options lors du renouvellement. Nous avons juste besoin d’ajouter dans notre crochet. Ouvrez le fichier de configuration avec votre éditeur préféré:

sudo nano /etc/letsencrypt/renewal/.conf

Un fichier texte s’ouvrira avec quelques options de configuration. Ajoutez votre crochet sur la dernière ligne. Dans ce cas, nous utilisons un exemple permettant de recharger un service + rabbitmq +:

/etc/letsencrypt/renewal/your_domain.conf

renew_hook =

Mettez à jour la commande ci-dessus avec tout ce que vous devez exécuter pour recharger votre serveur ou exécuter votre script de conversion de fichier personnalisé. Sur Debian, vous utiliserez généralement + systemctl + pour recharger un service.

Enregistrez et fermez le fichier, puis exécutez une analyse à blanc pour vérifier que la syntaxe est correcte:

sudo certbot renew --dry-run

Si vous ne voyez aucune erreur, vous êtes tous ensemble. Certbot est configuré pour se renouveler si nécessaire et exécuter toutes les commandes nécessaires pour que votre service utilise les nouveaux fichiers.

Conclusion

Dans ce didacticiel, nous avons installé le client Certbot Let’s Encrypt, téléchargé un certificat SSL en mode autonome et activé les renouvellements automatiques avec les hooks renew. Cela devrait vous permettre de bien utiliser les certificats de Let’s Encrypt avec des services autres que votre serveur Web habituel.

Pour plus d’informations, veuillez consulter Certbot ’documentation.