Il browser può utilizzare solo il certificato di cui è a conoscenza. Nel caso dei certificati server SSL, ci sono tre metodi con cui il browser otterrà i certificati necessari per costruire una catena da una radice che il browser si fida, fino al certificato per convalidare (nel tuo caso, il "falso"):
- Il browser potrebbe avere una copia locale dei certificati (in un negozio chiamato "CA intermedio" o qualcosa del genere).
- Il browser può seguire l'URL trovato nei certificati stessi. Un certificato può avere un'estensione
Authority Information Access
, che può puntare (con un URL) a posto dove può essere trovato il certificato per l'emittente del certificato che contiene l'estensione.
- Si suppone che un server SSL invii il suo certificato come parte di una catena completamente sviluppata.
Il download automatico funziona solo finché l'URL è presente nei certificati e i server corrispondenti sono raggiungibili; inoltre, per prevenire problemi di pollo e uova, detto URL deve essere HTTP, non HTTPS. Tuttavia, non tutti i browser eseguiranno questo download. Dipende dal browser e anche dal sistema operativo e dalla loro configurazione. Alcuni browser si rifiuteranno di utilizzare nient'altro che la catena esatta inviata dal server.
Quindi la mia ipotesi è che il tuo proxy, che funge da server SSL, non invii una catena completa. Invia il certificato "falso" e la "CA intermedia proxy", ma non la "CA intermediario aziendale". Pertanto, il browser non ha questo ultimo certificato e non può costruire una catena completa.
Per verificare ciò, utilizza OpenSSL (lo strumento da riga di comando):
openssl s_client -connect www.aservername.com:443
Questo stamperà (tra le altre informazioni) l'oggetto e i nomi degli emittenti per tutti i certificati nella catena inviati dal server.
In alternativa, esegui alcuni strumenti di monitoraggio della rete (ad es. Wireshark ) per vedere il messaggio Certificate
SSL dal server, che contiene il catena di certificati dal server.