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