Simular la Revocación del Certificado
En este paso, aprenderá cómo revocar un certificado. La revocación es un proceso crítico para cuando la clave privada de un certificado se ve comprometida, o el certificado ya no es necesario antes de su expiración natural. Esto se gestiona mediante una Lista de Revocación de Certificados (CRL).
Una CRL es una lista firmada digitalmente, emitida por una CA, que contiene los números de serie de todos los certificados que ha revocado. Los clientes pueden descargar la CRL para comprobar si un certificado que han recibido sigue siendo válido.
Para gestionar la revocación, openssl necesita un pequeño archivo de configuración para saber dónde encontrar los archivos de la base de datos de la CA (index.txt y serial). El script de configuración para este laboratorio ya ha creado el directorio necesario (my-ca) y los archivos. Ahora, cree el archivo de configuración.
Utilice el comando cat para crear 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
Este archivo de configuración le indica a OpenSSL cómo operar como una Autoridad de Certificación. Esto es lo que hace cada sección:
default_ca = CA_default: Señala a la sección de configuración principal de la CA.
dir = ./my-ca: Directorio de trabajo de la CA para los archivos de la base de datos
database = $dir/index.txt: Base de datos de certificados (rastrea certificados emitidos/revocados)
serial = $dir/serial: Archivo de número de serie para identificadores de certificados únicos
private_key = ca.key: Clave privada de la CA para firmar certificados
certificate = ca.pem: Archivo del propio certificado de la CA
default_md = sha256: Algoritmo hash para firmas (SHA-256)
policy = policy_anything: Reglas de validación de certificados
crl_extensions = crl_ext: Opciones de formato de CRL
default_crl_days = 30: Período de validez de la CRL (30 días)
countryName = optional: Código de país
stateOrProvinceName = optional: Estado/provincia
localityName = optional: Ciudad/ubicación
organizationName = optional: Nombre de la organización
organizationalUnitName = optional: Departamento
commonName = supplied: Nombre de dominio/servidor (requerido)
emailAddress = optional: Dirección de correo electrónico
authorityKeyIdentifier=keyid:always: Incluye el identificador de la CA en las CRL para su verificación
Este archivo de configuración es el "manual de operaciones" para su CA. Le dice a OpenSSL dónde encontrar las claves, cómo almacenar los certificados y qué reglas seguir para emitir y revocar certificados.
Ahora, revoque el certificado del servidor (server.crt). Este comando buscará el número de serie del certificado y lo marcará como revocado en el archivo de base de datos index.txt.
openssl ca -config my-ca.conf -revoke server.crt
Verá una salida que confirma la revocación.
Después de revocar, debe generar y publicar una CRL actualizada.
openssl ca -config my-ca.conf -gencrl -out my-ca.crl
Esto crea el archivo my-ca.crl, que contiene la lista de certificados revocados.
Finalmente, intentemos verificar el certificado del servidor nuevamente, pero esta vez, también proporcionaremos la CRL. Un proceso de verificación adecuado debe comprobar la revocación.
openssl verify -CAfile ca.pem -CRLfile my-ca.crl -crl_check server.crt
El comando ahora falla con un mensaje claro:
C = US, ST = California, L = MountainView, O = MyWebServer, CN = example.com
error 23 at 0 depth lookup: certificate revoked
error server.crt: verification failed
El error "certificate revoked" (certificado revocado) confirma que nuestro proceso de revocación fue exitoso. El cliente, al verificar la CRL, identificó correctamente que el certificado para example.com ya no es confiable.