Publié le 01/16/2018, rédigé par Gaulthier LALLEMAND

Let's Encrypt

Gérer les logs de Certbot (Debian)

Prérequis : avoir installé Certbot.

Certbot génère des logs dans le répertoire suivant :

/var/log/letsencrypt/

Etant donné la volonté des concepteurs de faire de Certbot un service dont l'utilisateur n'aurait pas à s'occuper après la mise en place, la question de l'espace occupé par les logs s'est vite posée.

En effet, pour les systèmes dotés de peu d'espace disque, la génération sans limite de logs peut finir par causer une saturation de l'espace disque et un dysfonctionnement général du système.

J'ajoute que Certbot ne compresse pas ses logs.

C'est pourquoi une rotation des logs a été mise en place au sein de Certbot, afin de donner une limite arbitraire à la quantité de logs stockés sur le système. Cette limite est fixée par défaut à 1000 fichiers dans le répertoire /var/log/letsencrypt.

Il s'agit d'une limite valable pour l'ensemble des logs de Certbot (et non une limite par certificat).

Changer la quantité de logs disponibles

Pour changer la valeur par défaut du nombre de logs conservés par Certbot, il existe une option :

--max-log-backups [NOMBRE_DE_FICHIERS_LOGS]

Cette option n'est cependant pas très pratique, car il est nécessaire de la spécifier à chaque création et à chaque renouvellement d'un certificat.

Autrement dit, il faut non seulement l'indiquer à la création :

sudo certbot certonly --max-log-backups 31 ...

Mais aussi à chaque renouvellement, et donc dans la commande lancée par cron :

0 */12 * * * root certbot renew --max-log-backups 31 ...

Attention : dans mon exemple, je choisis de garder 31 fichiers de logs. Cela ne signifie pas 31 jours !

Utiliser le fichier de configuration général de Certbot

Il existe un fichier dans lequel on peut indiquer des options qui seront exécutées à chaque création et renouvellement d'un certificat :

/etc/letsencrypt/cli.ini

Si ce fichier n'existe pas, il me suffit de le créer. Je peux alors y mettre la ligne suivante :

# Les doubles tirets avant "max-log-backups" sont absents ici
max-log-backups = 31

Ainsi, chaque création et chaque renouvellement de certificat se déroulera comme si l'option --max-log-backups 31 était spécifiée.

Attention : Si je passe de 1000 à 31, les fichiers de log existants (de 32 à 1000) ne sont pas supprimés par Certbot (pas pour l'instant en tout cas). Il faut donc penser à les supprimer manuellement.

Annuler la gestion des logs de Certbot

Si je souhaite gérer moi-même la rotation des logs de Certbot, par exemple avec logrotate, je peux alors indiquer une valeur nulle dans le fichier /etc/letsencrypt/cli.ini :

max-log-backups = 0

Certbot se contentera d'écrire indéfiniment les logs dans le fichier /var/log/letsencrypt/letsencrypt.log.

Versions récentes

Selon l'OS et la version de Certbot, il se peux que le fichier /etc/letsencrypt/cli.ini existe déjà avec le contenu suivant :

# Because we are using logrotate for greater flexibility, disable the
# internal certbot logrotation.
max-log-backups = 0

Il se peut également qu'il existe parallèlement le fichier de configuration logrotate suivant :

/etc/logrotate.d/certbot

Avec ce contenu :

/var/log/letsencrypt/*.log {
    rotate 12
    weekly
    compress
    missingok
}

Logrotate se chargera de créer un nouveau fichier chaque semaine (weekly), de compresser les anciens logs (compress), et gardera 12 fichiers compressés (rotate 12) en plus du fichier courant.