Apache et SSL avec Let's Encrypt
Préparation
Configuration du pare feu
Pour commencer il faut vous assurer que le pare-feu de votre serveur autorise le trafic TCP sur le port 443, ce qui correspond au protocole de transport et au port par défaut pour le protocole HTTPS.
Ajout du dépot backports
Afin de faciliter la mise en œuvre et la maintenance des certificats SSL Let's Encrypt, nous allons installer le logiciel Certbot. Comme ce logiciel se trouve dans le dépôt backports, il faut s'assurer que celui-ci est bien présent dans le fichier /etc/apt/sources.list :
nano /etc/apt/sources.list
Si vous ne trouvez pas la ligne suivante dans votre fichier (ce qui est le cas par défaut), il suffit de l'ajouter :
deb http://ftp.debian.org/debian jessie-backports main
Assurez-vous ensuite que votre liste des paquets disponibles est bien à jour à l'aide de la commande suivante :
apt-get update
Installation de Certbot
Certbot est un petit outil écrit en python. Il permet d'obtenir, déployer et mettre à jour les certificats SSL fournis gratuitement par Let's Encrypt. Certbot sait aussi configurer automatiquement le HTTPS dans Apache, nous allons donc l'installer.
Voici la commande permettant d'installer Certbot pour Apache sur une Debian Jessie :
apt-get install python-certbot-apache -t jessie-backports
Création des certificats et configuration d'Apache
Pour créer vos certificats et les mettre en œuvre dans Apache, il suffit d'exécuter la commande suivante et de répondre à quelques questions :
certbot --apache
Une fois l'opération effectuée, pensez à faire une copie de sauvegarde du répertoire /etc/letsencrypt qui contient, entre autre, l'ensemble des certificats.
Renouvellement des certificats
Les certificats Let's Encrypt ne sont valables que 90 jours, il faut donc les renouveler régulièrement. Cette opération est également réalisable à l'aide Certbot, qui offre de nombreuses possibilités détaillées dans sa documentation en ligne.
Les informations qui suivent ne sont que des aides mémoire.
Renouvellement manuel
La commande suivante permet d'effectuer la mise à jour des certificats lorsque c'est nécessaire, c'est à dire lorsqu'ils arrivent à expiration dans les 30 jours :
certbot renew --pre-hook "service apache2 stop" --post-hook "service apache2 start"
Toutefois il est plus pratique d'automatiser le renouvellement des certificats SSL Let's Encrypt à l'aide de cron.
Renouvellement automatique
Pour effectuer une demande de renouvellement, par exemple un fois par semaine, il suffit d'ajouter un script dans /etc/cron.daily :
nano /etc/cron.weekly/certbot-ssl-renew
Le contenu du script est le suivant :
#!/bin/sh
# Renouvellement automatique des certificats SSL Let's Encrypt
set -e
certbot renew --quiet --pre-hook "service apache2 stop" --post-hook "service apache2 start"
Une fois le script sauvegardé n'oubliez pas de le rendre exécutable...
chmod 0755 /etc/cron.weekly/certbot-ssl-renew
Et de recharger la configuration de cron :
service cron reload
Voilà, votre serveur est maintenant configuré pour tenter de renouveler ses certificats Let's Encrypt automatiquement, toutes les semaines.