Révocation des certificats

Dernière mise à jour : | Voir toute la documentation

Lorsqu’un certificat n’est plus fiable, vous devez le révoquer. Cela peut se produire pour plusieurs raisons. Par exemple, vous pourriez accidentellement partager la clé privée sur un site Web public ; des pirates pourraient copier la clé privée de vos serveurs ; ou des pirates pourraient prendre le contrôle temporaire de vos serveurs ou de votre configuration DNS, et l’utiliser pour valider et émettre un certificat pour lequel ils détiennent la clé privée.

Lorsque vous révoquez un certificat Let’s Encrypt, Let’s Encrypt publie ces informations de révocation via le Online Certificate Status Protocol (OCSP), et certains navigateurs vérifient cet OCSP pour savoir s’ils doivent faire confiance à un certificat. Notez que le site OCSP a quelques problèmes fondamentaux, de sorte que tous les navigateurs ne feront pas cette vérification. Pourtant, la révocation des certificats qui correspondent à des clés privées compromises est une chose importante, et elle est requise par l'Accord de l’abonné de Let’s Encrypt.

Pour révoquer un certificat avec Let’s Encrypt, vous utiliserez l'ACME API, probablement via un client ACME comme Certbot. Vous devrez prouver à Let’s Encrypt que vous êtes autorisé à révoquer le certificat. Il y a trois façons de le faire : à partir du compte qui a émis le certificat, en utilisant un autre compte autorisé, ou en utilisant la clé privée du certificat.

Spécifier un code de motivation

Lors de la révocation d’un certificat, les abonnés de Let’s Encrypt doivent sélectionner un code de motivation comme suit :

Les demandes de révocation qui spécifient un code de motivation autre que ceux détaillés ci-dessus seront rejetées.

À partir du compte qui a émis le certificat

Si vous avez initialement émis le certificat et que vous avez toujours le contrôle du compte utilisé pour l’émettre, vous pouvez le révoquer en utilisant les informations d’identification de votre compte. Certbot tentera de le faire par défaut. Exemple :

certbot revoke --cert-path /etc/letsencrypt/archive/${YOUR_DOMAIN}/cert1.pem

En utilisant un autre compte autorisé

Si quelqu’un a émis un certificat après avoir compromis votre hôte ou votre DNS, vous voudrez révoquer ce certificat dès que vous aurez repris le contrôle. Afin de révoquer le certificat, Let’s Encrypt devra s’assurer que vous contrôlez les noms de domaine dans ce certificat (sinon les gens pourraient révoquer les certificats des autres sans permission) !

Pour valider ce contrôle, Let’s Encrypt utilise les mêmes méthodes qu’il utilise pour valider le contrôle pour l’émission : vous pouvez mettre une valeur dans un enregistrement DNS TXT ou mettre un fichier sur un serveur HTTP. En général, un client ACME s’en charge pour vous. Notez que la plupart des clients ACME combinent validation et émission, de sorte que la seule façon de demander des validations est de tenter l’émission. Vous pouvez ensuite révoquer le certificat résultant si vous n’en voulez pas, ou simplement détruire la clé privée.

Si vous voulez éviter l’émission d’un certificat, vous pouvez inclure un nom de domaine inexistant dans votre ligne de commande, ce qui fera échouer l’émission tout en validant les autres noms de domaine existants. Exemple :

certbot certonly --manual --preferred-challenges=dns -d ${YOUR_DOMAIN} -d nonexistent.${YOUR_DOMAIN}

Et suivez les instructions. Si vous préférez le valider en utilisant HTTP plutôt que DNS, remplacez l’indicateur --preferred-challenges par --preferred-challenges=http.

Une fois que vous avez validé le contrôle de tous les noms de domaine du certificat que vous voulez révoquer, vous pouvez télécharger le certificat à partir de crt.sh, puis procéder à la révocation du certificat comme si vous l’aviez émis :

certbot revoke --cert-path /PATH/TO/downloaded-cert.pem

En utilisant la clé privée du certificat

Si vous n’avez pas émis le certificat à l’origine, mais que vous avez une copie de la clé privée correspondante, vous pouvez le révoquer en utilisant cette clé privée pour signer la demande de révocation. Par exemple, si vous constatez qu’une clé privée a été accidentellement rendue publique, vous pouvez utiliser cette méthode pour révoquer les certificats qui utilisaient cette clé privée, même si vous n’êtes pas la personne qui a initialement émis ces certificats.

Pour utiliser cette méthode, vous aurez d’abord besoin d’une copie de la clé privée au format PEM.

Ensuite, si vous ne l’avez pas encore, téléchargez le certificat à révoquer. Let’s Encrypt consigne tous les certificats dans les journaux de Certificate Transparency, de sorte que vous pouvez trouver et télécharger les certificats à partir d’un moniteur de journaux comme crt.sh. La recherche d’un champ SubjectPublicKeyInfo (SPKI) correspondant permet de trouver tous les certificats qui utilisent la clé privée. Pour extraire le hachage SPKI d’une clé privée :

openssl pkey -outform DER -in /PATH/TO/privkey.pem -pubout | openssl sha256

Une fois que vous avez la clé privée et le certificat, vous pouvez révoquer le certificat comme suit :

certbot revoke --cert-path /PATH/TO/cert.pem --key-path /PATH/TO/privkey.pem --reason keyCompromise