Créer des certificats SSL gratuit pour Apache2 avec Let’s Encrypt

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.

Attention ! Ce type de certificat gratuit est fait pour passer un blog ou des sites non marchant. En effet si votre site effectue des transactions il vaut mieux se tourner vers un certificat payant avec une assurance sur les transactions.

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.

Note : Si la redirection ne ce fait pas c’est peut être un problème de cache du navigateur. Démarrez une session privée pour tester et si cela ne fonctionne toujours pas c’est qu’il y a probablement un problème de configuration…

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.

Note : Si jamais le renouvellement automatique ne fonctionne pas, vous recevrez un mail quelques semaines avant l’expiration sur l’adresse mail indiquée dans votre VirtualHost.

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.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.