La cadena de confianza: del leaf a la root
La seguridad de los certificados SSL se basa en una cadena de confianza jerarquica. Tu certificado (leaf certificate) no es confiado directamente por el navegador: esta firmado por una CA intermedia, que a su vez esta firmada por una root CA. El navegador tiene un trust store con las root CA confiadas (aproximadamente 150 root CAs en los navegadores modernos). Para confiar en tu certificado, el navegador debe poder construir la cadena completa desde el leaf hasta una root CA en su trust store. Si falta un eslabon, la cadena se rompe y el navegador muestra un error.
La herramienta Certificate Chain visualiza la cadena completa devuelta por el servidor, verificando la firma de cada certificado, las fechas de validez de cada uno, y la completitud de la cadena. Es mas detallada que el SSL Check: mientras ese proporciona un grado general, el Certificate Chain se concentra especificamente en la estructura de la cadena, identificando certificados faltantes, certificados en orden incorrecto, y certificados expirados en la cadena.
Problemas comunes en la cadena
El problema mas frecuente es el certificado intermedio faltante. El servidor debe enviar el leaf y todos los intermedios (pero no la root). Si falta un intermedio, algunos navegadores y clientes (especialmente moviles, cURL, aplicaciones Java) no pueden validar la cadena y muestran un error. Chrome en escritorio frecuentemente funciona de todos modos porque descarga automaticamente los intermedios faltantes (AIA fetching), enmascarando el problema. Por esto es fundamental probar con una herramienta dedicada como nuestro Certificate Chain.
Configurar correctamente la cadena
Para configurar correctamente la cadena, concatena el certificado del servidor con los certificados intermedios en un unico archivo (bundle o fullchain). El orden es: leaf primero, luego los intermedios del mas cercano al leaf al mas cercano a la root. No incluyas el certificado root. En Nginx: ssl_certificate apunta al fullchain. En Apache: SSLCertificateFile para el leaf, SSLCertificateChainFile para los intermedios. Let's Encrypt proporciona directamente el archivo fullchain.pem que contiene leaf + intermedios.
Despues de la configuracion, verifica con Certificate Chain y con SSL Check para el grado. Si emites certificados para multiples subdominios, verifica la cadena en cada uno — la configuracion podria ser diferente. Verifica tambien que tu dominio tenga los registros CAA Record Lookup configurados para limitar cuales CAs pueden emitir certificados, anadiendo un nivel adicional de proteccion a tu PKI.
Un caso particular es el cross-signing: Let's Encrypt uso inicialmente un certificado intermedio cross-signed por la root DST Root CA X3 (mas antigua y difundida) para garantizar compatibilidad con dispositivos Android anteriores a 7.1. Con la transicion a su propia root ISRG Root X1, algunos dispositivos antiguos podrian tener problemas. Si tu publico incluye dispositivos muy antiguos, verifica la compatibilidad de la cadena con esos clientes especificos.