HTTPS (certificats SSL/TLS) pour tous, gratuit et facile avec Let’s Encrypt !

Oui, le titre est un peu « racoleur » mais c’est pourtant vrai !

J’avais pour habitude de générer mes certificats SSL/TLS (pour mes serveurs de courriels IMAP et SMTP, et aussi pour la partie administrative de ce présent blog) avec StartSSL, une des (la ?) seule compagnie qui proposait des certificats gratuits pour 1 an, et renouvelables.

Mais je suis dernièrement tombé sous le charme (initiative de la fondation linux) et la simplicité (processus entièrement automatisable à partir de la ligne de commande) de Let’s Encrypt.

Voici des instructions pour générer un certificat pour un site existant; elles sont issues de la documentation officielle et de mon expérience récente avec Let’s encrypt.

Mise à jour Août 2019

Il est maintenant recommander d’utiliser les paquets officiels de certbot plutôt que le repo git et letsencrypt-auto : pour cela, il suffit d’utiliser les instructions à : https://certbot.eff.org/

Concernant l’installation sous Ubuntu pour Apache2 en mode « j’édite mes fichiers de conf. Apache2 tout seul« , çà donne :

Ceci étant fait, pour invoquer certbot, on utilisera :

La magie de certboot sur Ubuntu 18, c’est qu’il ajoute automatiquement un timer :

On peut vérifier le statut du timer :

Et dormir sur ses 2 oreilles : un service certbot vérifiera tous les jours si des certificats doivent être renouvelés !

Installation du client letsencrypt

Rien de bien particulier : il suffit d’avoir auparavant installé git et python 2 sur sa machine et de cloner le repo git de letsencrypt :

Vous devriez voir, si tout s’est bien passé la sortie suivante :

Génération de certificats sans arrêter Apache2, méthode webroot

Par défaut, letsencrypt permet de tout automatiser : la création du certificat et l’ajout du certificat à votre configuration Apache2 (ou Nginx d’ailleurs). Si vous ne voulez pas courir le risque d’abimer votre configuration accidentellement, je vous suggère d’utiliser le mode semi automatisé, webroot, qui va générer le certificat pour peu que vous lui indiquiez la racine des documents de votre site.

Par exemple, si le contenu de blog.dahanne.net est dans /var/www/blog.dahanne.net et que vous voulez que votre certificat couvre à la fois blog.dahanne.net et www.blog.dahanne.net :

Vous devriez obtenir en sortie :

et voilà ! vos certificats vous attendent dans /etc/letsencrypt/live/blog.dahanne.net :

Modification de votre VirtualHost Apache2 pour l’ajout HTTPS

Encore une fois la documentation officielle est bien détaillée : vous pouvez modifier votre fichier de configuration de site Apache 2 (normalement sous /etc/apache2/sites-enabled/blog.dahanne.net) en le passant de :

à :

Il vous suffit alors de recharger la configuration :

et de tester https://blog.dahanne.net

Vous paierez particulièrement attention à la validité du certificat, (un jolie cadenas vert)

Screen Shot 2016-01-12 at 00.06.40
certificat signé avec letsencrypt

et aussi à sa date de péremption : dans 3 mois seulement !

Screen Shot 2016-01-12 at 00.07.06
letsencrypt certificat de validité de 3 mois seulement

3 mois, comparé à 1 an de StartSSL, c’est un peu court, mais n’ayez crainte ! un ajout dans la crontab et le renouvellement sera automatique !

Renouveler automatiquement votre certificat letsencrypt

Le certificat est valide 3 mois, mais pour être sûr de ne pas être en retard (et pour faciliter la tâche cron :-P) on va renouveler le certificat tous les mois.

Il suffit de rajouter dans /etc/cron.monthly/ un petit script shell :

avec :

C’est identique à la commande de création, avec un drapeau en plus, –renew-by-default

Bonus : certificats Letsencrypts pour les courriels (SMTP et IMAP)

Pour le smtp, avec postfix :

Pour l’imap, avec dovecot :

On peut recharger, et c’est fini !

En conclusion

Le fait de pouvoir rajouter autant de certificats que l’on veut pour tous ses sous domaines, très simplement à partir de la ligne de commande constitue un fort avantage de Let’s Encrypt par rapport à d’autres solutions gratuites (et payantes !) : plus de processus manuels à travers son navigateur, de renouvellement avec certificat d’identité, etc.

Tellement facile à utiliser, qu’il n’y a plus d’excuses à utiliser de certificats auto généré, ou de connexions non chiffrées !

Une réflexion sur « HTTPS (certificats SSL/TLS) pour tous, gratuit et facile avec Let’s Encrypt ! »

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *