Todos os artigos sobre SSL SSL e certificados

Cadeia de Confiança de Certificados Explicada

Quando seu navegador se conecta a um site HTTPS, ele não confia no certificado cegamente. Ele verifica uma cadeia de confiança — uma série encadeada de certificados que leva do certificado do seu site até uma Autoridade Certificadora (CA) raiz pré-confiável.

Os três níveis

┌─────────────────────────────────┐
│         CA RAIZ                 │  Pré-instalada nos navegadores/SO
│   (ISRG Root X1 para LE)       │  Auto-assinada, longa validade (20+ anos)
└───────────────┬─────────────────┘
                │ assina

┌─────────────────────────────────┐
│      CA INTERMEDIÁRIA           │  Assinada pela raiz
│   (Let's Encrypt R3/R10)       │  Validade média (5-10 anos)
└───────────────┬─────────────────┘
                │ assina

┌─────────────────────────────────┐
│     SEU CERTIFICADO             │  Assinado pela intermediária
│   (example.com)                 │  Validade curta (90 dias para LE)
└─────────────────────────────────┘

CA Raiz — Confiável pelos navegadores e sistemas operacionais. Armazenada no repositório de certificados do dispositivo. Auto-assinada (ninguém assina pela raiz — ela É a âncora de confiança). As chaves raiz são mantidas offline em módulos de segurança de hardware.

CA Intermediária — Assinada pela raiz. É quem efetivamente emite os certificados de entidade final. Se uma intermediária for comprometida, apenas ela precisa ser revogada — a raiz permanece segura.

Certificado de entidade final — Seu certificado. Assinado pela intermediária. É isso que seu servidor envia aos navegadores.

Como a verificação funciona

Quando seu navegador recebe um certificado:

  1. Lê seu certificado — extrai o nome do emissor
  2. Encontra a intermediária — da resposta do servidor ou do cache do navegador
  3. Verifica a assinatura da intermediária — confirma que é assinada por uma raiz confiável
  4. Verifica a assinatura do seu certificado — confirma que é assinado pela intermediária
  5. Verifica datas de validade — nenhum certificado está expirado
  6. Verifica correspondência de domínio — o SAN/CN do certificado corresponde à URL
  7. Verifica revogação — o certificado não foi revogado (OCSP/CRL)

Se qualquer etapa falhar → o navegador exibe um aviso de segurança.

Por que a intermediária importa

O erro SSL mais comum é um certificado intermediário ausente. Se seu servidor envia apenas seu certificado sem a intermediária, os navegadores não conseguem construir a cadeia de confiança.

Nginx espera o fullchain.pem (seu certificado + intermediária combinados):

ssl_certificate /etc/ssl/fullchain.pem;  # cert + intermediária

Apache usa arquivos separados:

SSLCertificateFile /etc/ssl/cert.pem          # seu certificado
SSLCertificateChainFile /etc/ssl/chain.pem    # intermediária

O GetHTTPS fornece tanto o fullchain.pem quanto os arquivos separados cert.pem + chain.pem, para que você tenha o formato correto para qualquer servidor.

A cadeia da Let’s Encrypt

A cadeia atual da Let’s Encrypt:

ISRG Root X1 (raiz, em todos os repositórios de confiança)
  └── Let's Encrypt R10 (intermediária, assina seu certificado)
        └── yourdomain.com (seu certificado)

Também existe um caminho com assinatura cruzada através da DST Root CA X3 da IdenTrust para compatibilidade com dispositivos mais antigos, mas isso não é mais necessário para a maioria dos casos de uso.

Perguntas frequentes

Como corrijo erros de “certificado não confiável”?

Quase sempre: a intermediária está faltando. Use fullchain.pem (Nginx) ou adicione SSLCertificateChainFile chain.pem (Apache). Teste com:

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com

Procure por “verify return:1” (correto) vs “verify return:0” (problema na cadeia).

Posso ver a cadeia no meu navegador?

Sim. Clique no cadeado → “Certificado” (ou “A conexão é segura” → “O certificado é válido”). Você verá a cadeia: seu certificado → intermediária → raiz.

O que acontece se uma CA raiz for comprometida?

A raiz é removida dos repositórios de confiança via atualizações de navegador/SO. Todos os certificados emitidos sob essa raiz tornam-se não confiáveis. Isso é extremamente raro — as chaves raiz são armazenadas em módulos de segurança de hardware offline com controles de acesso físico.

Por que a Let’s Encrypt usa um certificado intermediário em vez de assinar diretamente com a raiz?

Isolamento de segurança. Se a chave intermediária for comprometida, apenas ela precisa ser revogada — a raiz permanece segura. A chave raiz é mantida offline é usada apenas para assinar intermediárias. Esta é a prática padrão de todas as principais Autoridades Certificadoras.

Preciso instalar o certificado raiz no meu servidor?

Não. Os certificados raiz são pré-instalados nos navegadores e sistemas operacionais. Seu servidor só precisa enviar seu certificado + a intermediária. O navegador já possui a raiz e a usa para verificar a cadeia.

Depurando problemas de cadeia

O erro SSL mais comum em produção é uma cadeia de certificados incompleta. Aqui está uma forma sistemática de diagnosticar:

Passo 1: Verifique a cadeia que seu servidor envia

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null

Observe a saída:

Certificate chain
 0 s:CN = example.com
   i:C = US, O = Let's Encrypt, CN = R10
 1 s:C = US, O = Let's Encrypt, CN = R10
   i:C = US, O = Internet Security Research Group, CN = ISRG Root X1
---
Verify return code: 0 (ok)
  • Depth 0 = seu certificado
  • Depth 1 = intermediária
  • “Verify return code: 0 (ok)” = cadeia está completa

Se você vê apenas depth 0 (sem depth 1), a intermediária está faltando.

Passo 2: Corrija a cadeia

Nginx: Use fullchain.pem (certificado + intermediária combinados):

ssl_certificate /etc/ssl/fullchain.pem;  # NÃO cert.pem

Apache: Adicione a intermediária explicitamente:

SSLCertificateChainFile /etc/ssl/chain.pem

Se você perdeu o chain.pem: Baixe a intermediária da Let’s Encrypt em letsencrypt.org/certificates ou reemita seu certificado com o GetHTTPS.

Passo 3: Verifique a correção

echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com 2>/dev/null | grep "Verify return code"
# Deve dizer: Verify return code: 0 (ok)

Artigos relacionados

SSL e certificados 2026-05-07
Como SSL/TLS Funciona: O Handshake TLS Explicado
Um passo a passo visual do handshake TLS — como seu navegador é um servidor estabelecem uma conexão criptografada em milissegundos. Cobre TLS 1.2, TLS 1.3, retomada de sessão e forward secrecy.
SSL e certificados 2026-05-07
Tipos de Certificados SSL Explicados: DV, OV e EV
Compare certificados SSL de Válidação de Domínio (DV), Válidação de Organização (OV) e Válidação Estendida (EV). Aprenda as diferencas em verificação, custo e quando você realmente precisa de cada tipo.
Implantacao 2026-05-08
Como Instalar um Certificado SSL no Nginx
Guia passo a passo para instalar um certificado SSL no Nginx. Abrange upload de arquivos, configuração completa do bloco server, boas práticas de TLS, HTTP/2, HSTS, configuração de redirecionamento, testes e solução de 6 erros comuns.
Obtenha um certificado SSL gratuito no seu navegador
Sem instalacao, sem conta. Sua chave privada nunca sai do seu dispositivo.
Obter seu certificado