Simular Revogação de Certificado
Nesta etapa, você aprenderá como revogar um certificado. A revogação é um processo crítico para quando a chave privada de um certificado é comprometida, ou o certificado não é mais necessário antes de sua expiração natural. Isso é gerenciado usando uma Lista de Revogação de Certificados (CRL - Certificate Revocation List).
Uma CRL é uma lista assinada digitalmente, emitida por uma CA, que contém os números de série de todos os certificados que ela revogou. Os clientes podem baixar a CRL para verificar se um certificado que receberam ainda é válido.
Para gerenciar a revogação, o openssl precisa de um pequeno arquivo de configuração para saber onde encontrar os arquivos de banco de dados da CA (index.txt e serial). O script de configuração para este laboratório já criou o diretório necessário (my-ca) e os arquivos. Agora, crie o arquivo de configuração.
Use o comando cat para criar 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 arquivo de configuração informa ao OpenSSL como operar como uma Autoridade Certificadora. Veja o que cada seção faz:
default_ca = CA_default: Aponta para a seção de configuração principal da CA.
dir = ./my-ca: Diretório de trabalho da CA para arquivos de banco de dados
database = $dir/index.txt: Banco de dados de certificados (rastreia certificados emitidos/revogados)
serial = $dir/serial: Arquivo de número de série para IDs de certificado exclusivos
private_key = ca.key: Chave privada da CA para assinar certificados
certificate = ca.pem: O próprio certificado da CA
default_md = sha256: Algoritmo de hash para assinaturas (SHA-256)
policy = policy_anything: Regras de validação de certificado
crl_extensions = crl_ext: Opções de formatação da CRL
default_crl_days = 30: Período de validade da CRL (30 dias)
countryName = optional: Código do país
stateOrProvinceName = optional: Estado/província
localityName = optional: Cidade/localização
organizationName = optional: Nome da organização
organizationalUnitName = optional: Departamento
commonName = supplied: Nome do domínio/servidor (obrigatório)
emailAddress = optional: Endereço de e-mail
authorityKeyIdentifier=keyid:always: Inclui o identificador da CA nas CRLs para verificação
Este arquivo de configuração é o "manual de operações" da sua CA. Ele informa ao OpenSSL onde encontrar chaves, como armazenar certificados e quais regras seguir para emitir e revogar certificados.
Agora, revogue o certificado do servidor (server.crt). Este comando procurará o número de série do certificado e o marcará como revogado no arquivo de banco de dados index.txt.
openssl ca -config my-ca.conf -revoke server.crt
Você verá uma saída confirmando a revogação.
Após a revogação, você deve gerar e publicar uma CRL atualizada.
openssl ca -config my-ca.conf -gencrl -out my-ca.crl
Isso cria o arquivo my-ca.crl, que contém a lista de certificados revogados.
Finalmente, vamos tentar verificar o certificado do servidor novamente, mas desta vez, também forneceremos a CRL. Um processo de verificação adequado deve verificar a revogação.
openssl verify -CAfile ca.pem -CRLfile my-ca.crl -crl_check server.crt
O comando agora falha com uma mensagem clara:
C = US, ST = California, L = MountainView, O = MyWebServer, CN = example.com
error 23 at 0 depth lookup: certificate revoked
error server.crt: verification failed
O erro "certificate revoked" (certificado revogado) confirma que nosso processo de revogação foi bem-sucedido. O cliente, ao verificar a CRL, identificou corretamente que o certificado para example.com não é mais confiável.