What happens if the browser requests https://example.com, but example.com has never had a valid SSL certificate? Will the browser automatically redirect to the http:// version?
No. I browser moderni non eseguono il downgrade autonomamente su HTTP semplice. Se un certificato non è valido, l'utente vedrà semplicemente un avviso del certificato (e eventualmente un'opzione per aggiungere un'eccezione).
If so then an evil proxy operator should be able to simulate that response, right?
Se i browser hanno reindirizzato a un semplice HTTP quando hanno visto un certificato non valido, un MITM può eseguire il downgrade silenzioso di qualsiasi nuova connessione protetta modificando i dettagli del certificato trasmesso. Quello sarebbe un grosso problema di sicurezza. Ecco perché, finchè utilizzi HTTPS fin dall'inizio, un MITM non può reindirizzare da nessuna parte.
Piuttosto, ciò che un utente malintenzionato può fare è provare a intercettare una semplice risposta HTTP prima che la connessione sia aggiornata in HTTPS. Ad esempio, se digiti mybank.com
, il tuo browser non sa se il sito fornisce ancora HTTPS e prova prima http://mybank.com
. Anche se questo sito HTTP risponde immediatamente con un reindirizzamento a https://mybank.com
, un MITM potrebbe già intercettare la risposta e rimuovere il reindirizzamento per mantenerti su un semplice HTTP. (La funzione HTTP Strict Transport Security (HSTS) impedisce questo attacco esatto istruendo il tuo browser a visitare sempre il sito su HTTPS e rifiutare tutti i tentativi di usare un semplice HTTP.)