Nominalmente, en la filosofía "X.509" pura, el cliente SSL debe obtener el certificado del servidor y todos los certificados de CA intermedios necesarios de la forma que crea conveniente, pero en particular, hablando con el Directorio , que es el servidor LDAP mundial gigante que contiene todo.
Desafortunadamente, el Directorio nunca existió (demasiado centralizado, demasiado complejo), por lo que los protocolos prácticos deben incluir alguna disposición para el envío de certificados. Sucede lo mismo en SSL / TLS : el servidor envía su propio certificado y un montón de otros certificados que "pueden ayudar" al cliente. De hecho, el estándar TLS incluso especifica que el servidor DEBE enviar una cadena lista para validar:
certificate_list
This is a sequence (chain) of certificates. The sender's
certificate MUST come first in the list. Each following
certificate MUST directly certify the one preceding it. Because
certificate validation requires that root keys be distributed
independently, the self-signed certificate that specifies the root
certificate authority MAY be omitted from the chain, under the
assumption that the remote end must already possess it in order to
validate it in any case.
En particular, observe que la propia raíz autofirmada puede o no estar incluida. Esta raíz nunca es necesaria del lado del cliente (y nunca lo ha sido), pero enviarla es "tradicional" (una de las innumerables tradiciones en TI; no es útil, pero en su mayoría es inofensiva).
El cliente debe poder validar la cadena de certificados "tal como está" y está permitido (como en "moralmente justificado"), según el estándar TLS, para rechazar el protocolo de enlace si se envió la cadena exacta por el servidor no puede ser validado. Sin embargo, al cliente también se le permite (y se le recomienda) que intente reconstruir otra cadena y validar eso, si lo que el servidor envió no era directamente utilizable. Los navegadores modernos hacen eso; intentarán utilizar certificados de CA intermedios conocidos localmente (obtenidos en la instalación o almacenados en caché) y también pueden descargar certificados de CA adicionales, siguiendo la URL que se encuentra en los certificados ( Authority Information Access
extension). Al menos IE en Windows (reciente) hará eso, pero, para evitar una situación desagradable de gallina y huevo, solo seguirá la URL http://
, no https://
. Estas descargas adicionales pueden tomar algún tiempo y hacer que el apretón de manos sea menos robusto, en caso de una red inestable o un tiempo de espera.
Resumen: el envío de la raíz no es obligatorio, pero es tradicional (es improbable que la sobrecarga de la red de 1 kB por saludo completo tenga un impacto significativo o incluso perceptible en el rendimiento). El envío de la CA intermedia se requiere nominalmente y, en la práctica, se recomienda, aunque los navegadores / sistemas operativos modernos pueden recuperarse mediante el uso de estrategias de creación de cadenas de certificados alternativas.