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 :
revoke
: sous-commande de Certbot qui permet de révoquer un certificat ;--cert-path [CHEMIN_ABSOLU]
: indique le chemin absolu de mon certificat ;--reason [RAISON]
: [Optionnel] indique la raison de la révocation, à choisir parmiunspecified
(par défaut si cette option est absente),keycompromise
,affiliationchanged
,superseded
ou encorecessationofoperation
.
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) :
--delete-after-revoke
: Certbot supprimera le certificat après sa révocation;--no-delete-after-revoke
: Certbot conservera le certificat après sa révocation.
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