A cadeia de confianca: do leaf a root
A seguranca dos certificados SSL se baseia em uma cadeia de confianca hierarquica. Seu certificado (leaf certificate) nao e confiado diretamente pelo navegador: e assinado por uma CA intermediaria, que por sua vez e assinada por uma root CA. O navegador tem um trust store com as root CAs confiaveis (aproximadamente 150 root CAs nos navegadores modernos). Para confiar no seu certificado, o navegador deve poder construir a cadeia completa do leaf ate uma root CA no seu trust store. Se falta um elo, a cadeia se quebra e o navegador mostra um erro.
A ferramenta Certificate Chain visualiza a cadeia completa retornada pelo servidor, verificando a assinatura de cada certificado, as datas de validade de cada um, e a completude da cadeia. E mais detalhada que o SSL Check: enquanto esse fornece um grau geral, o Certificate Chain se concentra especificamente na estrutura da cadeia, identificando certificados faltantes, certificados na ordem errada, e certificados expirados na cadeia.
Problemas comuns na cadeia
O problema mais frequente e o certificado intermediario faltante. O servidor deve enviar o leaf e todos os intermediarios (mas nao a root). Se falta um intermediario, alguns navegadores e clientes (especialmente moveis, cURL, aplicacoes Java) nao conseguem validar a cadeia e mostram um erro. O Chrome no desktop frequentemente funciona de qualquer forma porque baixa automaticamente os intermediarios faltantes (AIA fetching), mascarando o problema. Por isso e fundamental testar com uma ferramenta dedicada como nosso Certificate Chain.
Configurar corretamente a cadeia
Para configurar corretamente a cadeia, concatene o certificado do servidor com os certificados intermediarios em um unico arquivo (bundle ou fullchain). A ordem e: leaf primeiro, depois os intermediarios do mais proximo ao leaf ao mais proximo da root. Nao inclua o certificado root. No Nginx: ssl_certificate aponta para o fullchain. No Apache: SSLCertificateFile para o leaf, SSLCertificateChainFile para os intermediarios. Let's Encrypt fornece diretamente o arquivo fullchain.pem contendo leaf + intermediarios.
Apos a configuracao, verifique com Certificate Chain e com SSL Check para o grau. Se emite certificados para multiplos subdominios, verifique a cadeia em cada um — a configuracao pode ser diferente. Verifique tambem que seu dominio tenha os registros CAA Record Lookup configurados para limitar quais CAs podem emitir certificados, adicionando um nivel adicional de protecao a sua PKI.
Um caso particular e o cross-signing: Let's Encrypt usou inicialmente um certificado intermediario cross-signed pela root DST Root CA X3 (mais antiga e difundida) para garantir compatibilidade com dispositivos Android anteriores a 7.1. Com a transicao para sua propria root ISRG Root X1, alguns dispositivos antigos podem ter problemas. Se seu publico inclui dispositivos muito antigos, verifique a compatibilidade da cadeia com esses clientes especificos.