Nominalmente, nella pura filosofia "X.509", il client SSL dovrebbe ottenere il certificato del server e tutti i certificati CA intermedi necessari in qualsiasi modo lo ritenga opportuno, ma in particolare parlando con Directory , che è il gigantesco server LDAP mondiale che contiene tutto.
Sfortunatamente, la Directory non è mai esistita (troppo centralizzata, troppo complessa), quindi i protocolli pratici devono includere alcune disposizioni per l'invio dei certificati stessi. Succede in SSL / TLS : il server invia il proprio certificato e un mucchio di altri certificati che "possono aiutare" il cliente. In effetti, lo standard TLS specifica anche che il server DEVE inviare una catena pronta per la convalida:
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.
In particolare, si noti che la stessa radice autofirmata può essere inclusa o meno. Questa radice non è mai necessaria dal lato client (e non lo è mai stata), ma l'invio è "tradizionale" (una delle miriadi di tradizioni nell'IT, non utile, ma soprattutto innocua).
Il client dovrebbe essere in grado di convalidare la catena di certificati "così com'è" ed è permesso (come in "moralmente giustificato"), secondo lo standard TLS, per rifiutare l'handshake se la catena esatta inviata dal server non può essere convalidato. Tuttavia, il client è anche autorizzato (e incoraggiato) a provare a ricostruire qualche altra catena e a convalidarlo, se ciò che il server inviato non era direttamente utilizzabile. I browser moderni lo fanno; cercheranno di utilizzare certificati CA intermedi localmente noti (ottenuti all'installazione o memorizzati nella cache) e potranno anche scaricare certificati CA aggiuntivi, seguendo l'URL trovato nei certificati stessi ( Authority Information Access
estensione). Almeno IE su Windows (recente) lo farà, ma, per evitare una brutta situazione di pollo e uova, seguirà solo http://
URL, non https://
. Questi download extra possono richiedere del tempo e rendere l'handshake meno robusto, in caso di rete instabile o timeout.
Riepilogo: l'invio della radice non è obbligatorio, ma tradizionale (è improbabile che l'overhead della rete di +1 kB per full handshake abbia un impatto significativo o persino rilevabile sulle prestazioni). L'invio della CA intermedia è nominalmente richiesto e, in pratica, consigliato, sebbene i browser / sistemi operativi moderni possano essere ripristinati utilizzando strategie alternative per la creazione di catene di certificati.