Let’s Encrypt sous Debian – Apache

Parlons rapidement de Let’s Encrypt avant de passer à l’action.

149e86cd7f135095e9c92f4e67a4b6a7b80a60c0

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

lets

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.

output

2 – Configuration automatique

Le script lance ensuite la création de certificats et vous demande de choisir le domaine à configurer :

Capture d'écran de 2016-01-25 17-05-47

Il faut indiquer une adresse email pour pouvoir récupérer les certificats si ils sont perdus :

Capture d'écran de 2016-01-25 17-05-58

Puis accepter les conditions d’utilisation du service :

Capture d'écran de 2016-01-25 17-06-01

Le choix est ensuite proposé entre l’utilisation en parallèle d’http + https ou redirection automatique vers https, (ce que je vous conseille).

Capture d'écran de 2016-01-25 17-06-33

Et voilà ! Votre certificat SSL est en place !

Capture d'écran de 2016-01-25 17-06-36

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 :

Capture d'écran de 2016-01-25 17-06-15

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 …

Laisser un commentaire

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