Sto cercando di capire i meccanismi pratici dei certificati (intermedi) cross-signing. Ad esempio, sto esaminando Let's Encrypt Chain of Trust . Quella pagina menziona:
IdenTrust has cross-signed our intermediates. This allows our end certificates to be accepted by all major browsers while we propagate our own root.
Inoltre, la pagina contiene collegamenti a entrambi il certificato intermedio firmato con la chiave privata appartenente alla propria CA radice ISRG così come il certificato intermedio firmato con la chiave privata appartiene alla CA di IdenTrust .
La mia aspettativa era vedere entrambi i certificati intermedi in arrivo sul cavo quando si imposta una connessione TLS con www.letsencrypt.org, lasciando al cliente la decisione su quale dei due intermediari utilizzare per costruire una catena di fiducia. Tuttavia, vedo solo l'intermedio firmato da IdenTrust.
L'ho osservato con wireshark, analizzando il traffico TLS mentre navigavo su www.letsencrypt.org con il mio browser web. Per forzare "l'altra" catena di fiducia, non mi sono fidato del certificato Root CA X3 dell'ora legale nell'app Keychain Access (sono su un Mac) e infatti non ero più in grado di navigare nel sito. Poi ho aggiunto il certificato ISRG Root X1, che indica di fidarsi sempre di esso ma non riesco ancora a navigare nel sito. Questo supporta la mia osservazione che il certificato intermedio firmato da ISRG non viene mai fornito dal server.
Ho anche provato l'app openssl s_client
, ma senza risultati.
Supponiamo che mi fidi della radice ISRG e non di IdenTrust, come faccio a far condividere al server il certificato intermedio firmato da ISRG Root? O più generalmente richiesto, se sono disponibili più catene di trust, ad esempio a causa della firma incrociata, come vengono condivisi i certificati di entrambe le catene con i client? Perché non ricevo un pacchetto che contiene entrambi i certificati per l'intermedio?
Aggiornamento: la prima risposta afferma che le specifiche TLS non consentono lo scambio di più catene di certificati. Questo spiega molto.
Tuttavia, le mie aspettative sono impostate dalle risposte alla domanda Qual è l'utilizzo dei certificati di cross signing in X.509? . La risposta accettata menziona: "Si tratta di espandere la fiducia" e "aumentare la facilità di verifica della fiducia, come le situazioni in cui hai clienti che si fidano di CA1 o CA2 (ma non di entrambi). In tal caso, puoi attraversare -Accedi ad un cert di cui fidarsi entrambi. ".
Se è consentita la sostituzione di una sola catena, ciò non sembra come "fiducia in espansione", ma piuttosto come "modifica della fiducia". Inoltre, per un server particolare, se deve selezionare una particolare catena, allora l'argomento "facilità di verifica" non contiene più nessuno - almeno non se il tuo unico meccanismo disponibile è l'handshake TLS. È corretto?