web-dev-qa-db-fra.com

Comment révoquer un certificat openssl lorsque vous ne l'avez pas

J'ai fait un certificat openssl signé par l'autorité de certification créé sur la machine locale.

Ce certificat a été supprimé et je ne l'ai plus.

Il est impossible de créer un autre certificat avec le même commonName car openssl ne le permet pas et générera l'erreur:

failed to update database
TXT_DB error number 2

Comment puis-je révoquer le certificat pour en créer un autre avec le même commonName?

50
leszek.hanusz

(Basé sur réponse de Nilesh ) Dans la configuration par défaut, openssl conservera des copies de tous les certificats signés dans /etc/ssl/newcerts, nommé par son numéro d'index. Alors grep /etc/ssl/index.txt pour obtenir le numéro de série de la clé à révoquer, par ex. 1013, puis exécutez la commande suivante:

openssl ca -revoke /etc/ssl/newcerts/1013.pem #replacing the serial number

Le -keyfile et -cert mentionné dans la réponse de Nilesh n'est requis que si cela diffère de votre openssl.cnf paramètres.


Vous pouvez également modifier /etc/ssl/index.txt.attr pour contenir la ligne

unique_subject = no

pour autoriser plusieurs certificats avec le même nom commun. Si vous avez publié le certificat d'origine, la révocation de l'ancien est cependant la solution préférable, même si vous n'exécutez pas de serveur OSCP ou ne fournissez pas de listes de révocation de certificats.

70
Tobias Kienzler

Je n'ai pas essayé cela, mais il semble que vous ayez besoin de quelque chose comme ça.

openssl ca -revoke bad_crt_file -keyfile ca_key -cert ca_crt

openssl enregistre automatiquement une copie de votre certificat dans le répertoire newcerts. Vous voudrez peut-être le vérifier pour récupérer votre certificat. Malheureusement, vous avez besoin d'un certificat pour le révoquer. Voir les détails suivants: http://www.mad-hacking.net/documentation/linux/security/ssl-tls/revoking-certificate.xml

7
Nilesh