Certificat SSL Let’s Encrypt sur Fedora 23

Certificat SSL Let's Encrypt sur Fedora 23La 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
 

Apache / , , , , , , , , , , , ,