TL; DR: L'uso di certificati autofirmati non significa che MITM è possibile e l'utilizzo di un certificato emesso da una CA pubblica non significa che MITM sia impossibile. Tuttavia, è più probabile che MITM sia possibile se vengono utilizzati certificati autofirmati poiché i client che trattano con certificati autofirmati spesso gestiscono questi dati nel modo sbagliato.
L'utilizzo di un certificato autofirmato non consente il MITM in generale e l'utilizzo di un certificato emesso da una CA pubblica non protegge in generale dal MITM. Oltre a mantenere privata la chiave privata, l'importante protezione contro gli attacchi MITM non è il tipo di certificato utilizzato sul server ma il modo in cui questo certificato viene verificato sul client, ovvero se il server viene autenticato correttamente utilizzando un certificato o meno.
Il modo stabilito per autenticare un server utilizzando un certificato firmato da una CA pubblica è controllare l'oggetto del certificato, la catena di fiducia, la scadenza ecc. - vedere Framework di certificati SSL 101: In che modo il browser verifica effettivamente la validità di un determinato certificato server? per i dettagli. Ma se un client non sta eseguendo questi controlli o non sta facendo correttamente questi controlli, un utente malintenzionato nel percorso potrebbe invece fornire il proprio certificato e il client non lo noterà. In passato questo tipo di errori si verificava a causa dell'ignoranza o di errori, ad esempio non controllare i certificati, non convalidare l'argomento, non controllare i vincoli di base ecc.
Con certificati autofirmati è anche possibile l'autenticazione corretta del server: se il client sa che il certificato deve aspettarsi (o la sua chiave pubblica, o un hash di esso ...) in primo piano il client può controllare che il certificato consegnato corrisponde a quello previsto. Questo tipo di verifica viene effettivamente eseguita correttamente in molti casi d'uso. Ma in molti altri casi è sbagliato: non è raro che i client abbiano semplicemente disabilitato completamente tutti i controlli del certificato se si aspettano un certificato autofirmato invece di aspettarsi un certificato autofirmato specifico. Con tali client interrotti MITM è facile poiché l'utente malintenzionato potrebbe semplicemente utilizzare un certificato arbitrario e il client lo accetterà.