A partir d’un serveur web Apache 2, nous allons ajouter un certificat SSL et rediriger tout le trafique HTTP vers la version HTTPS.
Let’s Encrypt est une autorité de certification sponsorisé par plusieurs grosses société dont OVH. L’objectif est de fournir des certificats SSL pour sécuriser les sites web gratuitement et de manière simplifié. Notez que depuis plusieurs années maintenant Google favorise dans ses resultats les sites ayant un accès en HTTPS. Vous allez donc indirectement améliorer le référencement de site web à l’aide de cet article.
Installation du paquet
L’outil officiel de Let’s Encrypt s’appelle certbot toutefois nous allons ici utiliser un script python disponible directement dans les dépôts officiel et qui fera la même chose en étant spécialement adapté à Apache2.
apt install python-letsencrypt-apache
Création d’un certificat
Avant de créer notre certificat, nous avons deux pré-requis :
- Votre nom de domaine est déclaré publiquement et peut donc être résolu sur internet.
- Vous avez un virtualhost configuré pour ce nom de domaine.
- Vous avez défini le nom de domaine dans ServerName ou ServerAlias.
- Vous avez défini l’adresse mail qu’utilisera Let’s Encrypt grâce au paramètre ServerAdmin.
Si les deux conditions suivantes sont remplies, vous pouvez exécuter la commande suivante en remplaçant par votre nom de domaine.
letsencrypt --apache -d example.com
Après quelques secondes d’attente, vous aurez une fenêtre vous demandant le type d’installation. Choisissez « Secure » pour demander au script de rajouter les lignes de redirection permettant de forcer l’utilisation du HTTPS dans tous les cas.
Une fois validé, vous aurez un message vous confirmant la réussite du processus de création du certificat.
Congratulations! You have successfully enabled https://example.com
Rendons-nous dans notre dossier apache2 où se trouve toutes les configurations.
cd /etc/apache2/sites-available/
En listant les fichiers vous pourrez voir que Let’s Encrypt a créé un nouveau fichier de configuration nommé :
www.com.example-le-ssl.conf
Si vous avez suivi mon article permettant l’installation d’un serveur Apache2, je vous invite à renommer ce fichier car il ne respecte pas la syntaxe défini dans l’article.
a2dissite www.com.example-le-ssl.conf mv www.com.example-le-ssl.conf ssl.com.example.conf a2ensite ssl.com.example.conf service apache2 reload
Si vous tapez maintenant l’adresse http://example.com dans votre navigateur, vous serez automatiquement redirigé vers la version https. Cette redirection est également valable pour toutes les pages référencé par google jusqu’à maintenant.
Renouvellement automatique des certificats
Les certificats Let’s Encrypt ont une durée de validité de 90 jours après quoi il faut renouveler soit manuellement à l’aide de la commande ci-dessous soit automatiquement à l’aide d’un cron.
letsencrypt renew
Si vous lancez cette commande maintenant vous n’aurez pas de renouvellement de votre certificat car il est tout neuf.
Nous allons quand même ajouter une tâche planifiée pour faire le renouvellement automatiquement. Commencez par ouvrir votre gestionnaire de cron en tant qu’utilisateur root.
crontab -e
Puis ajoutez la ligne ci-dessous qui va exécuter un script chargé de renouveler automatiquement les certificats.
#letsencrypt 15 3 * * 1 sh /root/letsencrypt-renew.sh &> /dev/null
Avant de créer notre script, vous allez devoir taper la commande suivante et copier le résultat obtenu.
echo $PATH
Nous allons maintenant créer un script dans le dossier /root/ mais vous pouvez bien entendu stocker où vous le souhaitez et adapter les commandes.
nano /root/letsencrypt-renew.sh
Ajoutons le contenu suivant où la partie en rouge est le résultat de la commande echo.
#!/bin/sh
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
letsencrypt renew >> /var/log/le-renew.log
Ajoutons le droit d’exécution et testons le script pour valider que tout va bien.
chmod +x /root/letsencrypt-renew.sh sh /root/letsencrypt-renew.sh
Vous pouvez voir le résultat de la commande dans le fichier /var/log/le-renew.log si jamais il y a un soucis.
Sauvegarde des fichiers de configuration
En consultant notre nouveau virtualhost ssl.com.example.conf, nous pouvons voir que les fichiers de configuration de Let’s Encrypt sont disponible dans le dossier /etc/letsencrypt/live qui contient des liens symbolique vers d’autres dossiers présent dans /etc/letsencrypt.
Je vous invite à inclure dans votre politique de sauvegarde le dossier /etc/letsencrypt pour être sûr de pouvoir restaurer si besoin rapidement votre site.
Conclusion
Nous avons vu dans ce guide comment installer un certificat SSL pour son site web tournant sur un serveur Apache 2. Vous pouvez répéter l’opération avec autant de domaines et de sous-domaines que voulu sachant que les certificats « wildcard » sont annoncés pour bientôt et que cela simplifiera encore plus l’installation !
N’hésitez pas également à suivre le blog officiel de Let’s Encrypt pour connaître les dernières nouvelles du projet.