ssl-letsencrypt
Comment utiliser le mode autonome de Certbot pour récupérer les certificats SSL de Let's Encrypt sur Ubuntu 16.04
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 est Certbot d’EFF.
[Certbot] offre plusieurs façons de valider votre domaine, de récupérer des certificats et de configurer automatiquement Apache et Nginx. Dans ce tutoriel, nous aborderons le mode autonome de Certbot et la manière de l'utiliser pour sécuriser d'autres types de services, tels qu'un serveur de messagerie.
Nous ne discuterons pas des détails de la configuration SSL, mais lorsque vous aurez terminé, vous disposerez d'un certificat valide qui sera automatiquement renouvelé. De plus, vous pourrez automatiser le rechargement de votre service pour récupérer le certificat renouvelé.
[ssl-cerbot-standalone] use-cerbot-standalone
[Pre-requis]
- serveur Ubuntu 16.04
- Un nom de domaine pointé sur votre serveur
- Port 80 et 443 ouvert.
[Step-1-install-cerbot]
Ubuntu inclut le client Certbot dans son dépôt par défaut, mais il est un peu dépassé. Nous l'installerons donc à partir du PPA (Personal Package Archive) officiel d'Ubuntu. Il s'agit de dépôts alternatifs qui empaquettent des logiciels plus récents ou plus obscurs. Tout d'abord, ajoutez le dépôt :
sudo add-apt-repository ppa:certbot/certbot
Vous devrez appuyer sur ENTRÉE pour accepter. Ensuite, mettez à jour la liste des paquets pour récupérer les informations sur les paquets du nouveau dépôt :
sudo apt-get update
Enfin, installez le paquet certbot :
sudo apt-get install certbot
Maintenant que Certbot est installé, lançons-le pour obtenir notre certificat.
Running Cerbot
[Step2-Running-cerbot]
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 ports 80 (HTTP) ou 443 (HTTPS) pour y parvenir. Ouvrez le port approprié dans votre pare-feu :
sudo ufw allow 80
sudo ufw allow 443
## Response:
#Output
#Rule added
#Rule added (v6)
[Lancer-cerbot]:
Pour obtenir le certificat avec cerbot on va taper cette ligne de commande:
Les options:
--standalone: pour indiquer à Certbot de gérer le défi en utilisant son propre serveur web intégré. --preferred-challenges: L'option indique à Certbot d'utiliser le port 80 ou le port 443. --preferred-challenges http: Si vous utilisez le port 80 --preferred-challenges tls-sni :Pour le port 443, ce serait -d: est utilisé pour spécifier le domaine pour lequel vous demandez un certificat Et -d options permettant de couvrir plusieurs domaines avec un seul certificat.
[notes]: 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ù sont stockés vos certificats :
[Output] IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at /etc/letsencrypt/live/example.com/fullchain.pem. Your cert will expire on 2017-10-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. 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: Donating to EFF:
sudo certbot certonly --standalone --preferred-challenges http -d example.com
Nous avons nos certificats. Voyons ce que nous avons téléchargé et comment utiliser les fichiers avec notre logiciel.
Configuration serveur app nginx
[config-app-ssl]
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 regardons ce que Certbot a téléchargé pour nous. Utilisez ls pour lister le répertoire qui contient nos clés et nos certificats :
sudo ls /etc/letsencrypt/live/example.com
[Output] :
cert.pem chain.pem fullchain.pem privkey.pem README
Renouvellement du certificat
[Step-4-renouvellement-certificat]
Les certificats de Let's Encrypt ne sont valables que quatre-vingt-dix jours. Ceci a pour but d'encourager les utilisateurs à automatiser le processus de renouvellement de leurs certificats. Le paquet certbot que nous avons installé s'en charge pour nous en ajoutant un script renew à /etc/cron.d. Ce script s'exécute deux fois par jour et renouvelle tout certificat dont l'expiration est proche de trente jours.
Nos certificats étant renouvelés automatiquement, nous avons encore 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é dans l'étape 3, nous pouvons avoir besoin de manipuler les fichiers de certificats d'une manière ou d'une autre pour les faire fonctionner avec le logiciel que nous utilisons. C'est la raison d'être de l'option renew_hook de Certbot.
sudo nano /etc/letsencrypt/renewal/example.com.conf
Pour ajouter un renew_hook, nous mettons à jour le fichier de configuration du 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. Il ne nous reste plus qu'à ajouter notre hook. Ouvrez le fichier de configuration avec votre éditeur préféré :
Un fichier texte s'ouvre avec quelques options de configuration. Ajoutez votre hook sur la dernière ligne :
renew_hook = systemctl reload rabbitmq
Mettez à jour la commande ci-dessus en fonction de ce que vous avez besoin d'exécuter pour recharger votre serveur ou pour exécuter votre script de fusion de fichiers personnalisé. En général, sur Ubuntu, vous utiliserez systemctl pour recharger un service. Sauvegardez et fermez le fichier, puis lancez un test Certbot pour vous assurer que la syntaxe est correcte :
sudo certbot renew --dry-run
Conclusions: