A revogação de certificados é o processo de invalidar um certificado SSL antes de sua data de expiração — geralmente porque a chave privada foi comprometida, o certificado foi emitido incorretamente ou a propriedade do domínio mudou.
Em teoria, a revogação é como o sistema de CAs lida com emergências. Na prática, é a parte mais fraca da infraestrutura PKI. Veja por quê e o que está substituindo esse mecanismo.
Quando revogar um certificado
- Chave privada comprometida — vazada, roubada ou exposta (ex.: commitada em um repositório Git público)
- Certificado emitido incorretamente — a CA emitiu um certificado para um domínio que você não controla
- Domínio vendido — você não é mais proprietário do domínio coberto pelo certificado
- Rotação de chave — você está rotacionando chaves e deseja invalidar o certificado antigo
- Servidor desativado — o certificado não deveria mais ser válido
Como a revogação funciona
CRL (Certificate Revocation List)
O mecanismo original de revogação. A CA pública uma lista de todos os números de série de certificados revogados. Os navegadores baixam a lista e verificam contra ela.
Problemas:
- As CRLs crescem com o tempo (milhões de entradas)
- Os navegadores devem baixar a lista inteira antes de verificar qualquer certificado
- Lento e consome muita banda — a maioria dos navegadores parou de verificar CRLs há anos
OCSP (Online Certificate Status Protocol)
Uma verificação em tempo real. Em vez de baixar uma lista, o navegador pergunta ao servidor OCSP da CA: “Este certificado foi revogado?”
Como funciona:
Navegador → Responder OCSP: "O certificado serial #12345 ainda é válido?"
Responder OCSP → Navegador: "Good" / "Revoked" / "Unknown"
Problemas:
- Privacidade — a CA sabe quais sites você está visitando (ela vê cada solicitação OCSP)
- Latência — adiciona uma ida e volta de rede a cada nova conexão HTTPS
- Disponibilidade — se o responder OCSP estiver fora do ar, os navegadores geralmente fazem soft-fail (aceitam o certificado mesmo assim), tornando a revogação ineficaz
OCSP Stapling (a melhoria)
O servidor busca a resposta OCSP periodicamente e a “grampeia” ao handshake TLS. O navegador obtém o status de revogação sem contatar a CA.
Benefícios:
- Sem vazamento de privacidade (o navegador não contata a CA)
- Sem latência extra (a resposta é incluída no handshake)
- Funciona mesmo se o servidor OCSP da CA estiver lento ou fora do ar
Configuração:
Nginx:
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
Apache:
SSLUseStapling on
SSLStaplingCache "shmcb:/var/run/apache2/ssl_stapling(128000)"
CRLite (o futuro)
O CRLite da Mozilla comprime todas as revogações conhecidas em um filtro compacto (~1,5 MB) que é enviado com as atualizações do Firefox. O navegador pode verificar o status de revogação localmente — sem requisição de rede, sem vazamento de privacidade, sem latência. Em 2026, o CRLite está habilitado no Firefox e pode ser adotado por outros navegadores.
A dura verdade sobre a revogação
A revogação está praticamente quebrada na prática:
- O Chrome não verifica OCSP ou CRL por padrão (depende de seus próprios CRLSets — um subconjunto curado)
- O Safari verifica OCSP mas faz soft-fail (aceita certificados se o servidor OCSP estiver inacessível)
- O Firefox usa CRLite (a melhor abordagem, mas exclusiva do Firefox)
- O soft-fail do OCSP significa que um atacante determinado pode bloquear a verificação OCSP e o navegador aceitará um certificado revogado
É por isso que a indústria está migrando para certificados de curta duração como defesa primária:
| Abordagem | Como protege |
|---|---|
| Revogação (OCSP/CRL) | Inválida um certificado comprometido — mas a verificação não é confiável |
| Validade curta (90 dias → 47 dias) | O certificado comprometido expira rapidamente — sem necessidade de verificação |
Se um certificado é válido por apenas 47 dias, uma chave roubada é útil por no máximo 47 dias. Isso limita o dano mesmo quando a revogação não funciona.
Como revogar um certificado Let’s Encrypt
Se sua chave privada foi comprometida:
# Com Certbot
sudo certbot revoke --cert-path /etc/letsencrypt/live/yourdomain.com/cert.pem --reason keycompromise
# Com acme.sh
acme.sh --revoke -d yourdomain.com
Após revogar, obtenha um novo certificado imediatamente — a revogação não corrige o problema, apenas inválida o certificado antigo. Use o GetHTTPS para emitir um novo certificado com um novo par de chaves.
Perguntas frequentes
Devo habilitar OCSP stapling?
Sim. Não garante a verificação de revogação (navegadores podem ignorar), mas é um benefício líquido: handshake TLS mais rápido (sem consulta OCSP no lado do cliente), melhor privacidade (o navegador não contata a CA), e alguns navegadores honram respostas OCSP grampeadas. É gratuito para habilitar — Nginx e Apache suportam com 2-3 linhas de configuração.
Quão rápido a revogação entra em vigor?
As CRLs são publicadas periodicamente (horas a dias). As respostas OCSP são cacheadas (tipicamente 1-4 horas). Na prática, um certificado revogado pode permanecer “válido” para alguns navegadores por até 24 horas. Esta é mais uma razão pela qual certificados de curta duração estão substituindo a revogação como defesa primária.
Preciso revogar ao renovar?
Não. Obter um novo certificado não requer revogar o antigo. O certificado antigo simplesmente expira. A revogação só é necessária se a chave privada foi comprometida — não para renovação de rotina.
Posso verificar se um certificado foi revogado?
# Verificar status OCSP
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -status 2>/dev/null | grep "OCSP Response Status"
# "successful" = OCSP stapling está funcionando
# Se vazio, stapling não está habilitado
Ou verifique no crt.sh — certificados revogados são marcados na interface.