introduction
Let’s Encrypt est un service proposant des certificats SSL gratuits via une API automatisée. Le client Let’s Encrypt le plus populaire estEFF’sCertbot.
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 modestandalone 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 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 Ubuntu 18.04 avec un utilisateur non root, compatible sudo et un pare-feu de base configuré, comme détaillé dansthis Ubuntu 18.04 server setup tutorial.
-
Un nom de domaine pointé vers votre serveur, ce que vous pouvez accomplir en suivant «https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean[How to Set Up a Host Name with DigitalOcean]. » Ce didacticiel utilisera
example.com
partout. -
Le port 80or 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 quewebroot mode de Certbot.
[[step-1 -—- Installing-certbot]] == Étape 1 - Installation de Certbot
Ubuntu inclut le client Certbot dans son référentiel par défaut, mais il est un peu obsolète. Au lieu de cela, nous allons l'installer à partir du PPA Ubuntu officiel de Certbot, ouPersonal Package Archive. Ce sont des référentiels alternatifs qui regroupent des logiciels plus récents ou plus obscurs. Tout d'abord, ajoutez le référentiel:
sudo add-apt-repository ppa:certbot/certbot
Vous devrez appuyer surENTER
pour accepter. Ensuite, mettez à jour la liste des packages pour récupérer les informations de package du nouveau référentiel:
sudo apt update
Et enfin, installez le packagecertbot
:
sudo apt install certbot
Maintenant que Certbot est installé, exécutons-le pour obtenir notre certificat.
[[step-2 -—- running-certbot]] == É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 les ports80
(HTTP) ou443
(HTTPS) pour ce faire. Ouvrez le port approprié sur votre pare-feu:
sudo ufw allow 80
Remplacez443
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 utiliserons l'option--standalone
pour indiquer à Certbot de gérer le défi en utilisant 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 voulez--preferred-challenges http
. Pour le port 443, ce serait--preferred-challenges tls-sni
. Enfin, l'indicateur-d
est utilisé pour spécifier le domaine pour lequel vous demandez un certificat. Vous pouvez ajouter plusieurs options-d
pour couvrir plusieurs domaines dans un seul certificat.
sudo certbot certonly --standalone --preferred-challenges http -d example.com
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ù sont stockés vos certificats:
OutputIMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2018-10-09. 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.
[[step-3 -—- configuration-your-application]] == É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. Utilisezls
pour lister le répertoire qui contient nos clés et certificats:
sudo ls /etc/letsencrypt/live/example.com
Outputcert.pem chain.pem fullchain.pem privkey.pem README
Le fichierREADME
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
: il s'agit de la clé privée du certificat. Cela doit être gardé en sécurité et secret, c'est pourquoi la plupart des répertoires/etc/letsencrypt
ont des permissions très restrictives et sont accessibles uniquement par l'utilisateurroot. La plupart des configurations logicielles appelleront cela quelque chose de similaire àssl-certificate-key
oussl-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 "certificat-ssl".
Pour plus d'informations sur les autres fichiers présents, reportez-vous à la section «https://certbot.eff.org/docs/using.html#where-are-my-certificates[Where are my certificates]» de la documentation Certbot.
Certains logiciels auront besoin de leurs certificats dans d'autres formats, dans d'autres emplacements ou avec d'autres autorisations utilisateur. Il est préférable de tout laisser dans le répertoireletsencrypt
et de ne modifier aucune autorisation (les autorisations seront simplement écrasées lors du renouvellement de toute façon), 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 en fonction des besoins. Ce script devra être exécuté chaque fois que Certbot renouvellera les certificats, dont nous parlerons ensuite.
[[step-4 -—- handling-certbot-automatic-renewals]] == Étape 4 - Gestion des renouvellements automatiques de Certbot
Les certificats de Let Encrypt ne sont valables que quatre-vingt-dix jours. Cela encourage les utilisateurs à automatiser leur processus de renouvellement des certificats. Le packagecertbot
que nous avons installé s'en charge pour nous 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 le but de l'optionrenew_hook
de Certbot.
Pour ajouter unrenew_hook
, nous mettons à 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/example.com.conf
Un fichier texte s'ouvrira avec quelques options de configuration. Ajoutez votre crochet à la dernière ligne:
/etc/letsencrypt/renewal/example.com.conf
renew_hook = systemctl reload rabbitmq
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é. Habituellement, sur Ubuntu, vous utiliserez principalementsystemctl
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 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 classique.
Pour plus d'informations, reportez-vous àCertbot’s documentation.