Nell'handshake Sever SSL TCP, il server invia anche certificati CA? Il server deve inviare tutti i certificati CA intermedi nel server Hello?
Nell'handshake Sever SSL TCP, il server invia anche certificati CA? Il server deve inviare tutti i certificati CA intermedi nel server Hello?
Il server non invia alcun certificato nel messaggio ServerHello
; invia certificati nel messaggio Certificate
con nome appropriato
Come indicato nello standard, il server dovrebbe inviare una catena completa, ordinata del certificato, a partire dal certificato del server, quindi un certificato per la CA intermedia che lo ha emesso, quindi un certificato per la CA intermedia che ha emesso il certificato CA intermedio precedente e così via. Alla fine della catena, il server ha la possibilità di includere o meno il certificato della CA radice; se la catena deve essere di qualche utilità per il client, allora il client deve già conoscere la radice e quindi non ha bisogno di una nuova copia di essa. Il testo pertinente nello standard è:
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.
che è abbastanza chiaro.
Si noti che, in generale, la catena di certificati non è unica. Un determinato certificato server potrebbe essere suscettibile di convalida attraverso diverse, forse molte catene di certificati. Ciò accade naturalmente al rinnovo del certificato CA intermedio (perché ci sarà un momento in cui il nuovo certificato CA è valido e il vecchio è ancora valido, quindi se usano la stessa chiave saranno intercambiabili). In caso di certificazione incrociata tra CA distinte, le diverse catene per un determinato certificato server possono persino portare a CA radice distinta. La conseguenza è che mentre il server SSL / TLS dovrebbe inviare una "catena valida", quella catena potrebbe non essere necessariamente quella che il client avrebbe preferito.
In generale, i client SSL / TLS tenteranno di convalidare la catena di certificati del server come ricevuta dal server. Se quella catena non soddisfa il cliente, allora il comportamento del cliente dipende dall'implementazione: alcuni clienti semplicemente rinunciano; altri (specialmente Windows / Internet Explorer) proveranno a costruire un'altra catena usando CA intermedia localmente nota e scaricando anche i certificati dall'URL trovati in altri certificati (l'estensione "accesso alle informazioni dell'autorità").