Parlons rapidement de Let’s Encrypt avant de passer à l’action.
Let’s Encrypt est une autorité de certification qui a pour but de proposer des certificats SSL, ou plutôt TLS pour ne pas faire d’abus de langage totalement gratuit. C’est un projet rassemblant des acteurs importants dans le monde du web comme Gandi, OVH, Mozilla, Cisco, Facebook, etc … ( https://letsencrypt.org/sponsors/ )
La volonté première est de rendre l’httpS accessible à tous et de la manière la plus simple possible, avec une installation quasi automatique des certificats sur le serveur.
Sorti tout récemment de la phase de beta-test depuis le 3 décembre, le service est ouvert à tous et le code du client est disponible sur GitHub à cette adresse :
https://github.com/letsencrypt/letsencrypt
1- Installations du client Let’s Encrypt
Cet article décrit la procédure d’installation et de configuration sur une Debian 8.2 à jour.
Sur Debian stable, il n’y a pas encore de paquets disponibles pour l’installation de Let’s Encrypt, nous allons donc utiliser la documentation officielle, qui décrit l’installation en seulement trois commandes.
A noter au passage qu’un paquet est déjà disponible sur Debian Sid : https://packages.debian.org/sid/web/letsencrypt
Nous suivons donc la documentation disponible ici : https://community.letsencrypt.org/t/quick-start-guide/1631
git clone https://github.com/letsencrypt/letsencrypt cd letsencrypt ./letsencrypt-auto
Ceci se résume en faisant un git clone pour récupérer les sources du projet, de se rendre dans le dossier ainsi récupéré et de lancer le script disponible. Il installe toutes les dépendances nécessaires.
2 – Configuration automatique
Le script lance ensuite la création de certificats et vous demande de choisir le domaine à configurer :
Il faut indiquer une adresse email pour pouvoir récupérer les certificats si ils sont perdus :
Puis accepter les conditions d’utilisation du service :
Le choix est ensuite proposé entre l’utilisation en parallèle d’http + https ou redirection automatique vers https, (ce que je vous conseille).
Et voilà ! Votre certificat SSL est en place !
Il ne reste plus qu’à redémarrer le serveur Apache et se rendre à l’url du site en https://….
Il reste à tester le renouvellement automatique du certificat. Il faut également savoir que contrairement aux autorités de certification classique, les certificats Let’s Encrypt émis ne sont valables que 90 jours.
3 – Problèmes rencontrés
Parce que tout n’est jamais aussi simple, j’ai pu noter deux problèmes :
3.1 – Script non compatible avec PHP-FPM :
Pour mes serveurs web, j’utilise PHP en FPM et non le mod-php pour Apache. Lors de l’utilisation de Let’s Encrypt, un bug apparaît sur une des lignes de configuration pour le FPM et fait avorter le processus de création du certificat. Bug bizarre car il indique :
Error while running apache2ctl configtest. Action 'configtest' failed. The Apache error log may have more information. AH00526: Syntax error on line 24 of /etc/apache2/sites-enabled/for******.com.conf: FastCgiExternalServer: redefinition of previously defined class "/fcgi-bin-php5-fpm-website"
Alors que quand on fait justement la commande apache2ctl configtest :
# apache2ctl configtest Syntax OK
La parade que j’ai trouvé pour l’instant est de commenter la ligne concernée :
FastCgiExternalServer /fcgi-bin-php5-fpm-website -socket /var/run/php5-fpm-website.sock -idle-timeout 250 -pass-header Authorization
et de la décommenter après avoir créer le certificat TLS.
En relançant le script, Let’s Encrypt vous proposera plusieurs choix :
3.2 – Plusieurs vhosts dans le même fichier :
Si vous disposez de plusieurs vhosts dans un même fichier de configuration apache, le script de Let’s Encrypt ne va prendre que le dernier ServerName trouvé. Il faut donc faire attention à ce « petit » détail.
4 – Conclusion
Pour conclure, je dirai que cette initiative est plutôt bonne et a encore besoin de gagner en maturité notamment sur la compatibilité avec les différents serveurs web et leurs configurations atypiques.
A suivre …