Simuler la Révocation de Certificat
Dans cette étape, vous apprendrez comment révoquer un certificat. La révocation est un processus critique lorsqu'une clé privée de certificat est compromise, ou lorsque le certificat n'est plus nécessaire avant son expiration naturelle. Ceci est géré à l'aide d'une Liste de Révocation de Certificats (CRL - Certificate Revocation List).
Une CRL est une liste signée numériquement, émise par une CA, qui contient les numéros de série de tous les certificats qu'elle a révoqués. Les clients peuvent télécharger la CRL pour vérifier si un certificat qu'ils ont reçu est toujours valide.
Pour gérer la révocation, openssl a besoin d'un petit fichier de configuration pour savoir où trouver les fichiers de base de données de la CA (index.txt et serial). Le script de configuration pour ce laboratoire a déjà créé le répertoire nécessaire (my-ca) et les fichiers. Créez maintenant le fichier de configuration.
Utilisez la commande cat pour créer my-ca.conf :
cat << EOF > my-ca.conf
[ ca ]
default_ca = CA_default
[ CA_default ]
dir = ./my-ca
database = \$dir/index.txt
serial = \$dir/serial
private_key = ca.key
certificate = ca.pem
default_md = sha256
policy = policy_anything
crl_extensions = crl_ext
default_crl_days = 30
[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional
[ crl_ext ]
authorityKeyIdentifier=keyid:always
EOF
Ce fichier de configuration indique à OpenSSL comment fonctionner en tant qu'Autorité de Certification. Voici ce que fait chaque section :
default_ca = CA_default: Pointeur vers la section de configuration principale de la CA.
dir = ./my-ca: Répertoire de travail de la CA pour les fichiers de base de données
database = $dir/index.txt: Base de données des certificats (suit les certificats émis/révoqués)
serial = $dir/serial: Fichier de numéro de série pour les identifiants uniques de certificat
private_key = ca.key: Clé privée de la CA pour la signature des certificats
certificate = ca.pem: Le certificat propre à la CA
default_md = sha256: Algorithme de hachage pour les signatures (SHA-256)
policy = policy_anything: Règles de validation des certificats
crl_extensions = crl_ext: Options de formatage de la CRL
default_crl_days = 30: Période de validité de la CRL (30 jours)
countryName = optional: Code pays
stateOrProvinceName = optional: État/province
localityName = optional: Ville/localisation
organizationName = optional: Nom de l'organisation
organizationalUnitName = optional: Département
commonName = supplied: Nom de domaine/serveur (requis)
emailAddress = optional: Adresse e-mail
authorityKeyIdentifier=keyid:always: Inclut l'identifiant de la CA dans les CRL pour la vérification
Ce fichier de configuration est le "manuel d'exploitation" de votre CA. Il indique à OpenSSL où trouver les clés, comment stocker les certificats et quelles règles suivre pour l'émission et la révocation des certificats.
Maintenant, révoquez le certificat serveur (server.crt). Cette commande recherchera le numéro de série du certificat et le marquera comme révoqué dans le fichier de base de données index.txt.
openssl ca -config my-ca.conf -revoke server.crt
Vous verrez une sortie confirmant la révocation.
Après la révocation, vous devez générer et publier une CRL mise à jour.
openssl ca -config my-ca.conf -gencrl -out my-ca.crl
Ceci crée le fichier my-ca.crl, qui contient la liste des certificats révoqués.
Enfin, essayons de vérifier à nouveau le certificat serveur, mais cette fois, nous fournirons également la CRL. Un processus de vérification approprié doit vérifier la révocation.
openssl verify -CAfile ca.pem -CRLfile my-ca.crl -crl_check server.crt
La commande échoue maintenant avec un message clair :
C = US, ST = California, L = MountainView, O = MyWebServer, CN = example.com
error 23 at 0 depth lookup: certificate revoked
error server.crt: verification failed
L'erreur "certificate revoked" (certificat révoqué) confirme que notre processus de révocation a réussi. Le client, lors de la vérification de la CRL, a correctement identifié que le certificat pour example.com n'est plus digne de confiance.