Installer les certificats SSL de LetsEncrypt avec Certbot

Voici ma procédure pense-bête. L’idée est de migrer des virtualhosts Apache déja configuré vers LetsEncrypt avec un bon contrôle, à savoir:
– aucun changement automatique des fichiers de configuration des sites web
– un certificat par sous domaine

Installer le générateur de certificats SSL en suivant la doc sur https://certbot.eff.org/

Arrêter le serveur web:

# systemctl stop apache2

Lancer le générateur de certificats SSL:

# certbot certonly

Choisir l’option 3 : « Spinup a temporary webserver (standalone) »

Saisir le nom de domaine. Ex: « tuxicoman.jesuislibre.net »

Ca va créer un certificat dans /etc/letsencrypt/live/ . Le certificat est aussi copié dans /etc/letsencrypt/archive/ et une tache de renouvellement est ajoutée dans  /etc/letsencrypt/renewal/ . Comme ça vous savez quoi effacer si vous faites de la merde.

Dans les fichiers de virtualhosts Apache qui sont destinés à recevoir du SSL , vous devez mettre au moins les lignes suivantes :

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/tuxicoman.jesuislibre.net/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/tuxicoman.jesuislibre.net/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf

Répéter l’opération pour tous les noms de domaine.

Redémarrer le serveur web:

# systemctl start apache2

Les certificats ont une durée de vie de 90 jours.

On va modifier la méthode de renouvellement pour utiliser Apache. Car sinon, la méthode « standalone » requiert que Apache soit éteint.

# grep -rl 'authenticator' /etc/letsencrypt/renewal/ | xargs sed -i "s/authenticator = standalone/authenticator = apache/g"

On peut ensuite vérifier que la procédure de renouvellement fonctionne:

# certbot renew --dry-run

Enlever « –dry-run » pour le faire réellement.

Mais en pratique vous n’aurez pas à vous en occuper. Vos certificats seront renouvelés automatiquement. Une tache journalière vérifie si vos certificats vont expirer et les renouvelle pour vous. Elle met son log dans /var/log/letsencrypt/letsencrypt.log

Par contre, je n’ai pas trouvé le code ou le crontab qui est responsable de cette tâche journalière. Ça m’intrigue… mais je suis sûr qu’un lecteur me donnera la solution ;)

7 Comments

Add a Comment