L'unico modo in cui un proxy può agire come un man-in-the-middle (presupponendo che il client e il server implementino correttamente una versione non interrotta del protocollo SSL / TLS e che le autorità di certificazione svolgano correttamente il loro lavoro ) è se il tuo browser si fida del proxy. Questo perché all'inizio della connessione, il client convalida che l'altro endpoint ha un certificato valido generato da un'autorità di certificazione riconosciuta.
Potrebbe esserci un proxy tra il client e il server. Questo è comune sulle reti aziendali, ad esempio, che spesso non hanno una connessione diretta tra gli host interni e Internet. Ma il proxy può scambiare solo byte avanti e indietro. Non può sapere, e tanto meno modificare, il contenuto. Può sapere a quale indirizzo IP ti stai collegando, ma non quale URL stai sfogliando.
Quindi cosa può andare storto? Se il tuo browser riconosce una CA che è intenzionata a firmare che proxy.example.com
è il server a cui il client sta tentando di connettersi, allora proxy.example.com
può effettuare la propria connessione al server e la connessione del client può essere reindirizzata in modo visibile o trasparente al proxy. Quindi il proxy è un man-in-the-middle.
Alcune reti aziendali configurano tutti i client in modo che si fidino dell'autorità di certificazione aziendale e impongono un proxy che riscrive tutte le connessioni SSL. Il client vede quindi ogni sito con un certificato firmato dalla CA dell'organizzazione. Dal momento che tutti i certificati hanno una firma valida, non lo noterai nell'uso quotidiano. Il modo per scoprire se questo sta accadendo (supponendo che il browser stesso non sia stato manomesso, solo il suo elenco di certificati) è quello di verificare chi ha firmato un particolare certificato, o di consultare l'elenco delle autorità di certificazione attendibili.