Let’s Encrypt: le SSL facile et gratuit

Enfin ! Enfin un moyen d’avoir un certificat SSL gratuit et pas chiant à mettre en place ! Depuis le temps que j’attends ce genre de truc. Je vous présente rapidement Let’s Encrypt qui est désormais en Bêta publique et qui propose des certificats SSL gratuits à renouveler pour l’instant au bout de trois mois.

Je ne vais pas vous expliquer HTTPS il faut juste savoir que quand vous surfez sur un site le protocole utilisé est HTTP et que lorsque ce protocole a besoin d’être sécurisé (paiement en ligne) on le combine avec une couche de chiffrement, soit TLS ou SSL, et il devient HTTPS. Et je vous le rappelle le chiffrement c’est bien ! Éviter de voir ses données circuler en clair c’est rassurant non ? Seulement voilà HTTPS se configure côté serveur via un système de clé et de certificat compliqué à mettre en place quand on est pas un warrior du serveur web ou tout simplement qu’on a pas envie de s’embêter. Ah oui et aussi un certificat permettant de chiffrer une communication en HTTP doit être émis par une autorité de « confiance » qui le fait donc payer. Cher. Voilà en gros le contexte dans lequel arrive Let’s Encrypt poussé par l’EFF, Mozilla, Cisco et bien d’autres. L’idée de Let’s Encrypt c’est que tout le monde puisse le plus facilement possible mettre en place son certificat en ne déboursant pas un rond, ce qui devrait logiquement permettre au chiffrement des sites web de faire un bon en avant.

Donc pour installer un certificat Let’s Encrypt on installe le client et on va voir ce qu’on peut faire avec

git clone https://github.com/letsencrypt/letsencrypt
cd letsencrypt
./letsencrypt-auto --help

Pas mal de possibilités non ? Des extensions permettent de configurer automatiquement son serveur web (pas encore Nginx) ce qui est pratique. Pour ma part j’ai choisi d’opter pour une méthode qui ne dépend pas du serveur web à base de lien symboliques.

J’arrête mon serveur web et je demande mes certificats pour mon domaine:

./letsencrypt-auto certonly --email adresmaildeladmin --agree-tos -a standalone -d mondomaine

Les certificat et les clés sont copiés dans /etc/letsencrypt/live normalement et il ne reste plus qu’à établir un lien symbolique pour que le serveur web puisse les trouver en notant bien que le fichier fullchain.pem correspond au fichier crt.pem et que le fichier privkey.pem correspond au fichier key.pem

Normalement avec une méthode pareille et les bons arguments qui vont bien il devrait être possible de faire un script de renouvellement qui est appelé par cron tous les 89 jours par exemple !

Pour l’instant Not A Robot est sécurisé avec Let’s Encrypt ainsi que mon instance de Yunohost. Deux points noirs par contre: devoir arrêter un serveur web en production pour récupérer son certificat, moi je m’en fous mais c’est loin d’être top et le deuxième: la longueur de clé RSA à 2048 bits par défaut que l’on peut tout de même forcer a 4096. J’essaierais de vous faire un retour dés que j’avance un peu plus dans la compréhension et la configuration mais vous pouvez d’ores et déjà commencer a vous protéger dés maintenant !