Publié le 12/31/2017, rédigé par Gaulthier LALLEMAND

Let's Encrypt

Révoquer un certificat Let's Encrypt (Debian) ?

Prérequis : avoir créé un certificat Let's Encrypt avec Certbot.

Si pour une raison quelconque, je sens que mon certificat Let's Encrypt n'est plus gage de sécurité, je peux le révoquer grâce à la sous-commande revoke de Certbot.

Identifier le certificat à révoquer

La commande revoke a besoin du chemin absolu de mon certificat nommé cert.pem (et non pas du nom).

Je souhaite révoquer le certificat ayant pour nom abc. Son chemin absolu est :

# Il s'agit en réalité d'un lien symbolique, mais celui-ci pointe
# vers le certificat abc le plus récent.
/etc/letsencrypt/live/abc/cert.pem

Révoquer le certificat

Pour cela, j'utilise la commande suivante :

sudo certbot revoke --cert-path [CHEMIN_ABSOLU]
                    --reason [RAISON]

Explication de la commande :

Dans mon cas, cela donne :

sudo certbot revoke --cert-path /etc/letsencrypt/live/abc/cert.pem --reason superseded

Certbot me demande alors si je souhaite supprimer le certificat révoqué :

Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Would you like to delete the cert(s) you just revoked?
-------------------------------------------------------------------------------
(Y)es (recommended)/(N)o: Y

-------------------------------------------------------------------------------
Congratulations! You have successfully revoked the certificate that was located
at /etc/letsencrypt/live/abc/cert.pem

-------------------------------------------------------------------------------

Si la question ne m'est pas posée (vieilles versions), je peux toujours supprimer le certificat que je viens de révoquer à l'aide de la sous-commande delete.

Si je décide de ne pas supprimer le certificat révoqué, il est alors marqué INVALID: REVOKED lorsque j'affiche la liste des certificats:

sudo certbot certificates
Found the following certs:
  Certificate Name: www.mondomaine.com
    Domains: www.mondomaine.com xmpp.mondomaine.com ftp.mondomaine.com
    Expiry Date: 2017-11-25 20:50:28+00:00 (VALID: 4 days)
    Certificate Path: /etc/letsencrypt/live/www.mondomaine.com/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/www.mondomaine.com/privkey.pem
  Certificate Name: abc
    Domains: abc.mondomaine.com mondomaine.com
    Expiry Date: 2017-11-25 20:23:24+00:00 (INVALID: REVOKED)
    Certificate Path: /etc/letsencrypt/live/abc/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/abc/privkey.pem

Attention : si un certificat révoqué n'est pas supprimé, il sera renouvelé au prochain passage de Certbot (selon la fréquence indiquée dans la commande cron), dès que sa période de validité sera inférieure à 30 jours. Par exemple, si je révoque mon certificat alors qu'il reste 35 jours de validité, mon certificat sera renouvelé automatiquement dans 6 jours.

Révocation silencieuse

En utilisant l'option --non-interactive (ou -n) afin d'éviter que Certbot ne pose des questions par le prompt, Certbot essaiera par défaut de supprimer le certificat révoqué. Il faut donc faire attention, au cas où vous souhaiteriez conserver le certificat révoqué.

Par exemple :

sudo certbot revoke --cert-path /etc/letsencrypt/live/abc/cert.pem \
                    --reason superseded \
                    --non-interactive

Depuis la version 0.21.0, les options suivantes ont été ajoutées à Certbot afin d'automatiser la révocation d'un certificat (ie. éviter que Certbot ne pose la question de la suppression) :

Je peux donc utiliser l'une de ces options ainsi :

sudo certbot revoke --cert-path /etc/letsencrypt/live/abc/cert.pem \
                    --reason superseded \
                    --non-interactive \
                    --no-delete-after-revoke