Certificat SSL Let’s Encrypt sur Fedora 23
La 1ère des choses à dire est que ce n’est pas très facile de générer un certificat SSL avec Let’s Encrypt sous Linux Fedora 23. Je dirais même plus : ça se mérite !
La création du certificat à partir d’une machine cliente
A partir d’une machine virtuelle Linux Fedora 23, j’ai tout d’abord installé le paquet Let’s Encrypt :
dnf install letsencrypt
Pour mon serveur Apache, il m’a fallu ensuite générer les trois fichiers privkey.pem, cert.pem et chain.pem. Le fichier fullchain.pem est réservé à Nginx. A partir de la ligne de commande, j’ai donc tapé :
letsencrypt --text --email info@mondomaine.com --domains www.mondomaine.com,mondomaine.com --agree-tos --renew-by-default --manual certonly
Lors de cette étape, vous devez à deux reprises récupérer les informations fournies par la commande letsencrypt et créer deux fichiers accessibles à partir d’un lien pointant vers http://www.mondomaine.com/.well-known/acme-challenge/, dont le contenu vous est lui-aussi fourni par la commande. Cette phase est extrêmement pénible. Et j’espère avoir été clair !
Les quatre fichiers qui composent le certificat SSL sont désormais créés sur la machine cliente dans un dossier du type /etc/letsencrypt/live/www.mondomaine.com/.
Configuration du serveur Apache
Pensez tout d’abord à installer aussi letsencrypt sur votre serveur Linux Fedora. Copiez les fichiers générés du dossier /etc/letsencrypt lors de l’étape précédente de la machine cliente vers votre serveur via SSH. Je les ai copiés sur le serveur au même emplacement, à savoir dans /etc/letsencrypt/live/www.mondomaine.com/.
Il faut ensuite éditer votre fichier de configuration Apache lié au virtualhost de votre nom de domaine, /etc/httpd/conf.d/mondomaine.conf et faire les modifications suivantes ( en gras dans l’exemple ci-dessous) :
<VirtualHost *:443> DocumentRoot "/home/www/mondomaine" ServerAdmin dszalkowski@gmail.com ServerName www.mondomaine.com:443 ServerAlias mondomaine.com *.mondomaine.com ErrorLog logs/mondomaine-error_log CustomLog logs/mondomaine-access_log combined env=!dontlog <FilesMatch "\.php$"> SetHandler "proxy:unix:/run/php-fpm/mondomaine.sock|fcgi://127.0.0.1" </FilesMatch> LogLevel warn SSLEngine on #SSLProtocol all -SSLv3 #SSLProxyProtocol all -SSLv3 #SSLCertificateFile /etc/pki/tls/certs/mondomaine.crt #SSLCertificateKeyFile /etc/pki/tls/private/mondomaine.key SSLVerifyClient none SSLCertificateFile /etc/letsencrypt/live/www.mondomaine.com/cert.pem SSLCertificateKeyFile /etc/letsencrypt/live/www.mondomaine.com/privkey.pem SSLCertificateChainFile /etc/letsencrypt/live/www.mondomaine.com/chain.pem </VirtualHost *:443>
Vous devez recharger la nouvelle configuration pour qu’elle soit prise en charge par Apache :
systemctl restart httpd
Le certificat est en place !
Renouvellement du certificat
Une fois créé, il faut penser à renouveler votre certificat. Vous pouvez le faire par systemd. Le plus simple reste encore de planifier une tâche exécutant le script /root/run-letsencrypt :
#!/bin/bash /usr/bin/letsencrypt -d www.mondomaine.com,domaine.com --renew-by-default -m info@mondomaine.com --agree-tos -t --webroot -w /home/www/mondomaine certonly systemctl reload httpd exit
Pour planifier l’exécution du script une fois par mois, tapez crontab -e et, à partir de votre éditeur, ajoutez cette tâche pour exécuter le script le 21 du mois à 19 h 00:
0 19 21 */1 * /root/run-letsencrypt 2>&1