Automatiser Let's Encrypt sur un serveur Cloud avec certbot
Introduction
L’autorité de certification Let’s Encrypt offre la possibilité d’obtenir des certificats TLS/SSL gratuitement et automatiquement pour les serveurs. Un inconvénient de Let’s Encrypt est la durée de validité relativement courte des certificats. Cet inconvénient peut être compensé par l’utilisation d’un logiciel qui automatise le renouvellement des certificats sur le serveur. Un logiciel approprié à cette fin est “certbot”, publié par la Electronic Frontier Foundation (EFF). Cet article montre, à titre d’exemple, comment configurer certbot sur un serveur Cloud hosting.fr en utilisant le serveur Web Apache.
En alternative à certbot, il existe acme.sh, qui ne nécessite pas Python. Un article séparé pour l’installation d’acme.sh est disponible ici.
Prérequis
Vous disposez d’un serveur Cloud hosting.fr avec un enregistrement DNS valide, par exemple
demo.mustermann-domain.de.Le système d’exploitation du serveur est une version actuelle de Debian ou Ubuntu.
Installation d’Apache
Veuillez vous connecter par SSH en tant qu’utilisateur root sur le serveur. Si la commande sudo n’est pas disponible sur le serveur, veuillez l’installer avec les commandes :
apt update
apt install sudo
Veuillez installer Apache avec les commandes suivantes, si ce n’est pas déjà fait :
sudo apt update
sudo apt install apache2
Pour que le serveur soit accessible depuis Internet, les ports 80 et 443 doivent être ouverts dans le pare-feu.
Installation de certbot
Suppression des anciennes versions
Veuillez vous assurer qu’aucune version obsolète de certbot n’est installée sur votre système en exécutant la commande suivante :
sudo apt remove certbot
Installation
Veuillez exécuter les commandes suivantes pour installer certbot sur votre système :
wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto
Variante 1
Il existe maintenant deux variantes de configuration. Dans la première variante, certbot peut configurer Apache automatiquement. Dans la deuxième variante, vous devez configurer le serveur Web manuellement. Pour ce faire, exécutez la commande suivante :
sudo /usr/local/bin/certbot-auto --apache
Après avoir entré l’une des deux commandes, d’autres paquets de la distribution seront installés :
...
0 à jour, 53 nouvellement installés, 0 à enlever et 0 non mis à jour.
74,6 Mo d'archives doivent être téléchargés.
Après cette opération, 229 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n]
Veuillez confirmer en saisissant o.
Après l’installation des paquets, vous serez invité à saisir une adresse e-mail. Cette adresse sera utilisée pour vous notifier si le certificat n’est pas renouvelé à temps :
Entrez votre adresse e-mail (utilisée pour les notifications urgentes de renouvellement et de sécurité) (Entrez 'c' pour annuler) :
Veuillez entrer une adresse e-mail où vous souhaitez recevoir des notifications.
Veuillez accepter les conditions d’utilisation de Let’s Encrypt en saisissant A :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Veuillez lire les conditions de service à
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. Vous devez
accepter pour vous inscrire auprès du serveur ACME à
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)ccepter/(C)annuler :
Ensuite, vous serez invité à accepter de recevoir une newsletter de Let’s Encrypt :
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Seriez-vous disposé à partager votre adresse e-mail avec la Electronic Frontier
Foundation, un partenaire fondateur du projet Let's Encrypt et l'organisation à but non lucratif qui développe Certbot ? Nous aimerions vous envoyer des e-mails concernant notre travail pour chiffrer le Web, les actualités de l'EFF, des campagnes et des moyens de soutenir la liberté numérique.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(O)ui/(N)on :
Nous recommandons ici de choisir l’option “N”.
Vous serez maintenant invité à indiquer pour quels domaines vous souhaitez demander des certificats. Veuillez les saisir sous forme de liste séparée par des virgules :
Aucun nom n'a été trouvé dans vos fichiers de configuration. Veuillez entrer votre nom de domaine (séparé par des virgules et/ou des espaces) (Entrez 'c' pour annuler) :
Veuillez noter qu’il n’est possible de demander des certificats que pour les domaines pointant vers l’IP du serveur.
Lorsque vous aurez demandé les certificats pour les domaines, une question apparaîtra pour savoir si les requêtes non sécurisées vers le serveur Web doivent être redirigées vers une connexion sécurisée :
Veuillez choisir si vous souhaitez rediriger le trafic HTTP vers HTTPS, supprimant l'accès HTTP.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1 : Pas de redirection - Ne faites aucune modification supplémentaire à la configuration du serveur Web.
2 : Redirection - Redirigez toutes les requêtes vers un accès HTTPS sécurisé. Choisissez cette option pour les nouveaux sites ou si vous êtes certain que votre site fonctionne sur HTTPS. Vous pouvez annuler ce changement en modifiant la configuration de votre serveur Web.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Sélectionnez le numéro approprié [1-2] puis [enter] (appuyez sur 'c' pour annuler) :
Nous recommandons ici de choisir l’option 2 pour configurer une redirection. Si aucune erreur ne survient dans certbot, le message “[…] Félicitations ! Votre certificat et votre chaîne ont été enregistrés à […]” apparaîtra.
Enfin, veuillez redémarrer Apache :
sudo systemctl restart apache2
Variante 2
Dans la deuxième variante, certbot ne télécharge que les certificats nécessaires et ne configure pas Apache. La configuration d’Apache devra donc être effectuée manuellement. Pour cela, veuillez entrer la commande suivante :
sudo /usr/local/bin/certbot-auto certonly --apache
Les étapes supplémentaires pour la configuration de certbot sont similaires à celles déjà décrites pour la première variante.
Automatisation du renouvellement des certificats
Pour automatiser le renouvellement des certificats, un cron-job doit être créé. Une entrée correspondante dans le fichier /etc/crontab peut être ajoutée à l’aide de la commande suivante :
echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && /usr/local/bin/certbot-auto renew" | sudo tee -a /etc/crontab > /dev/null
Test
Pour vérifier si certbot fonctionne correctement, veuillez accéder dans votre navigateur au domaine de votre serveur, par exemple https://demoserver.mustermann-domain.de. Si vous ne recevez pas d’avertissement concernant un certificat invalide dans votre navigateur, cela signifie que l’installation du certificat a été réussie.
De plus, vous pouvez utiliser des services tels que https://www.ssllabs.com/ pour vérifier si les certificats en place sont valides.
Références
- Guide d’installation officiel pour certbot