Comment utiliser le mode autonome Certbot pour récupérer les certificats SSL Let's Encrypt sur Ubuntu 22.04

De Get Docs
Aller à :navigation, rechercher

Introduction

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

Certbot offre une variété de façons de valider votre domaine, de récupérer des certificats et de configurer automatiquement Apache et Nginx. Dans ce didacticiel, nous aborderons le mode standalone de Certbot et comment l'utiliser pour sécuriser d'autres types de services, tels qu'un serveur de messagerie ou un courtier de messages comme RabbitMQ.

Nous ne discuterons pas des détails de la configuration SSL, mais lorsque vous aurez terminé, vous aurez 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 Ubuntu 22.04 avec un utilisateur non root, sudo activé et un pare-feu de base configuré, comme détaillé dans ce tutoriel de configuration du serveur Ubuntu 22.04.
  • Un nom de domaine pointé vers votre serveur. Si vous utilisez un Droplet DigitalOcean, vous pouvez le faire en suivant notre documentation Domaines et DNS. Ce tutoriel utilisera your_domain à travers.
  • Le port 80 ou 443 doit être inutilisé sur votre serveur. Si le service que vous essayez de sécuriser se trouve sur une machine avec un serveur Web qui occupe ces deux ports, vous devrez utiliser un mode différent tel que le mode webroot de Certbot.

Étape 1 - Installation de Certbot

Certbot recommande d'utiliser son package snap pour l'installation. Les packages Snap fonctionnent sur presque toutes les distributions Linux, mais ils nécessitent que vous ayez d'abord installé snapd afin de gérer les packages Snap. Ubuntu 22.04 prend en charge les snaps prêts à l'emploi, vous pouvez donc commencer par vous assurer que votre noyau snapd est à jour :

sudo snap install core; sudo snap refresh core

Si vous travaillez sur un serveur sur lequel une ancienne version de certbot était installée, vous devez la supprimer avant d'aller plus loin :

sudo apt remove certbot

Après cela, vous pouvez installer le certbot forfait:

sudo snap install --classic certbot

Enfin, vous pouvez lier le certbot depuis le répertoire d'installation de snap vers votre chemin, vous pourrez donc l'exécuter en tapant simplement certbot. Ce n'est pas nécessaire avec tous les packages, mais les snaps ont tendance à être moins intrusifs par défaut, de sorte qu'ils n'entrent pas en conflit avec d'autres packages système par accident :

sudo ln -s /snap/bin/certbot /usr/bin/certbot

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. Il utilise des ports 80 (HTTP) ou 443 (HTTPS) pour y parvenir. Ouvrez le(s) port(s) approprié(s) dans votre pare-feu :

sudo ufw allow 80
sudo ufw allow 443
OutputRule added
Rule added (v6)

Nous pouvons maintenant exécuter Certbot pour obtenir notre certificat. Nous utiliserons le --standalone option pour dire à Certbot de gérer le défi en utilisant son propre serveur Web intégré. Finalement, le -d flag est utilisé pour spécifier le domaine pour lequel vous demandez un certificat. Vous pouvez ajouter plusieurs -d options pour couvrir plusieurs domaines dans un seul certificat.

sudo certbot certonly --standalone -d your_domain

Lors de l'exécution de la commande, vous serez invité à saisir une adresse e-mail et à accepter les conditions d'utilisation. Après cela, vous devriez voir un message vous indiquant que le processus a réussi et où vos certificats sont stockés :

OutputIMPORTANT NOTES:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-10-02.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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

Vous devriez maintenant avoir vos certificats. Dans l'étape suivante, nous inspecterons certains des fichiers que nous avons téléchargés et découvrirons leurs fonctionnalités.

É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. Utilisation ls pour lister le répertoire qui contient nos clés et certificats :

sudo ls /etc/letsencrypt/live/your_domain
Outputcert.pem  chain.pem  fullchain.pem  privkey.pem  README

La README fichier dans ce répertoire contient plus d'informations sur chacun de ces fichiers. Le plus souvent, vous n'aurez besoin que de deux de ces fichiers :

  • privkey.pem: Il s'agit de la clé privée du certificat. Cela doit rester sûr et secret, c'est pourquoi la plupart des /etc/letsencrypt Le répertoire a des permissions très restrictives et n'est accessible que par l'utilisateur root. La plupart des configurations logicielles feront référence à cela comme quelque chose de similaire à ssl-certificate-key ou ssl-certificate-key-file.
  • fullchain.pem: Il s'agit de notre certificat, fourni avec tous les certificats intermédiaires. La plupart des logiciels utiliseront ce fichier pour le certificat réel et s'y référeront dans leur configuration avec un nom comme 'ssl-certificate'.

Pour plus d'informations sur les autres fichiers présents, reportez-vous à la section "Où sont mes certificats" de la documentation Certbot.

Certains logiciels auront besoin de leurs certificats dans d'autres formats, dans d'autres emplacements ou avec d'autres autorisations d'utilisateur. Il est préférable de tout laisser dans le letsencrypt répertoire, et ne modifiez aucune autorisation (les autorisations seront de toute façon écrasées lors du renouvellement), mais parfois ce n'est tout simplement pas une option. Dans ce cas, vous devrez écrire un script pour déplacer les fichiers et modifier les autorisations si nécessaire. 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's Encrypt ne sont valables que pendant quatre-vingt-dix jours. Il s'agit d'encourager les utilisateurs à automatiser leur processus de renouvellement de certificat. La certbot package que nous avons installé s'en charge pour nous en ajoutant un script de renouvellement à /etc/cron.d. Ce script s'exécute deux fois par jour et renouvellera tout certificat dans les trente jours suivant son expiration.

Avec le renouvellement automatique de nos certificats, 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 mentionné à l'étape 3, nous devrons peut-être manipuler les fichiers de certificat d'une manière ou d'une autre pour les faire fonctionner avec le logiciel que nous utilisons. C'est le but de Certbot renew_hook option.

Pour ajouter un renew_hook, nous mettons à jour le fichier de configuration de renouvellement de Certbot. Certbot se souvient de tous les détails de la façon dont vous avez récupéré le certificat pour la première fois et fonctionnera avec les mêmes options lors du renouvellement. Nous avons juste besoin d'ajouter notre crochet. Ouvrez le fichier de configuration avec votre éditeur préféré :

sudo nano /etc/letsencrypt/renewal/your_domain.conf

Un fichier texte s'ouvrira avec quelques options de configuration. Vous pouvez ajouter un crochet sur la dernière ligne qui rechargera tous les services Web, leur faisant utiliser le certificat renouvelé :

/etc/letsencrypt/renewal/<^>votre_domaine<^>.conf

renew_hook = systemctl reload your_service

Mettez à jour la commande ci-dessus pour tout ce que vous devez exécuter pour recharger votre serveur ou exécutez votre script munging de fichier personnalisé. Habituellement, sur Ubuntu, vous utiliserez principalement systemctl pour recharger un service. Enregistrez et fermez le fichier, puis exécutez une simulation Certbot pour vous assurer que la syntaxe est correcte :

sudo certbot renew --dry-run

Si vous ne voyez aucune erreur, vous êtes prêt. Certbot est configuré pour se renouveler si nécessaire et exécuter toutes les commandes nécessaires pour obtenir votre service en utilisant 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 des hooks de renouvellement. Cela devrait vous donner un bon départ pour utiliser les certificats Let's Encrypt avec des services autres que votre serveur Web habituel.

Pour plus d'informations, veuillez consulter la documentation de Certbot.