Comment gérer les certificats letsencrypt sur plusieurs serveurs de manière simple
L’objectif est multiple :
- Simplifier la gestion des certificats
- Ouvrir le port 80 sur un seul serveur.
- Sauvegarder les certificats régulièrement.
On utilisera un petit serveur dédié ou un serveur avec des applications non critiques.
Le schéma ci-contre donne un aperçu d’une installation multiserveurs et multi-domaines
Prérequis :
On suppose que le serveur est équipé d’un firewall.
Une infrastructure serveur d’application web (apache + un site sur /var/www/html par exemple (au minimum une page unique pointée par domain3 depuis internet sur le port 80) .
Letsencrypt installé et fonctionnel
Méthode :
Création des certificats :
sudo certbot certonly –apache –preferred-challenges http -d a.domain1
sudo certbot certonly –apache –preferred-challenges http -d b.domain1
Etc.. Pour l’ensemble des domaines et sous domaines utilisés.
Les résultats se trouvent dans /etc/letsencrypt/archive et /etc/letsencrypt/live avec un sous répertoire par domaine ou sous domaine.
Le répertoire archive contient l’historique des certificats y compris de dernier.
Le répertoire live contient les pointeurs vers les certificats en cours du répertoire archive.
Remarque : Il faut savoir que le logiciel Cerbot vérifie automatiquement tous les 30 jours la validité des certificats. Si nécessaire un renouvellement automatique est effectué et le certificat est valable pour 90 jours.
Ainsi les certifcats seront toujours à jour sur le serveur Letsencrypt.
Préparation des serveurs de destination.
Autoriser la copie directe par la commande RSYNC des deux répertoires (archive et live)
Définitions à apporter sur les 3 serveurs de destination server1, server2, server3
1 /etc/default/rsync => RSYNC_ENABLE=true | 2 /etc/rsyncd.conf [all] path = / read only = no uid = 0 gid = 0 hosts allow = server4 exclude = /tmp/ /var/tmp/ /var/cache/ /proc/ /sys/ /dev/ /run/ /boot | 3 Command line sudo service rsync restart |
Copie des certificats sur les serveurs.
Utilisation de la fonction RSYNC
Pour simplifier la procédure on recopie tous les certificats sur tous les serveurs. Cela fera également office de sauvegarde.
Création d’un fichier synchro.sh placé dans /home/xxx/Documents avec le contenu suivant :
rsync -ai —delete /etc/letsencrypt/archive server1::all/etc/letsencrypt
rsync -ai —delete /etc/letsencrypt/live server1::all/etc/letsencrypt
#
rsync -ai —delete /etc/letsencrypt/archive server2::all/etc/letsencrypt
rsync -ai —delete /etc/letsencrypt/live server2::all/etc/letsencrypt
#
rsync -ai —delete /etc/letsencrypt/archive server3::all/etc/letsencrypt
rsync -ai —delete /etc/letsencrypt/live server3::all/etc/letsencrypt
=====
Ajout dans la crontab de server4:
# les 9 du mois à 5h
0 5 9 * * /bin/sh /home/xxx/Documents/./synchro.sh
Ajout dans la crontab de server1, server2, server3 :
# relance les 9 à 5h30 apache pour recharger les certificats
30 5 9 * * systemctl restart apache2.service