Scenario: supponiamo che un MITM sia stato in grado di installare un certificato autofirmato simulato sul mio client (app per Android), invece del certificato autofirmato del mio server.
Quando ora la mia app tenta di connettersi al server, utilizzando:
URL url = new URL("https://www.hardcoded.unchangeable.uri.toserver");
HttpsURLConnection urlConnection = (HttpsURLConnection)url.openConnection();
urlConnection.setSSLSocketFactory(context.getSocketFactory());
urlConnection.connect();
...
Il MITM è in grado di reindirizzare la richiesta al suo server?
Se non sono al sicuro, vedrei solo un'eccezione di stretta di mano, no?