Sto cercando di creare un proxy MITM Windows locale con C # per gestire un'applicazione non supportata da un'azienda che non esiste più.
Il Proxy deve servire solo un dominio HTTPS che viene fatto creando un proxy che ascolta sull'indirizzo locale: porta 127.0.0.1:443.
Viene quindi creata una voce nel file host, ad esempio 127.0.0.1 my.single.domain.com.
Se dovessi connetterti a questo con un browser che utilizza la propria impostazione proxy e senza alcuna voce host, il browser invierà un "CONNECT ... etc" al proxy.
Ci sono molti esempi per questo e posso farlo funzionare bene da questi esempi. (Titanium.Web.Proxy ecc.)
Quando si utilizza un file host come descritto sopra, l'handshake di ssl / tls viene avviato immediatamente piuttosto che un "CONNECT .... etc" inviato. Questo perché il browser ora giustamente ritiene che 127.0.0.1 sia il server attuale.
Sono davvero in difficoltà a trovare un buon esempio di come gestirlo utilizzando l'opzione C # SslStream. La maggior parte sono per semplici demo di server client e francamente la maggior parte non funziona, inclusi gli esempi di MSDN.
Il mio requisito specifico è un browser che naviga verso
URI: HTTPS: \\ my.single.domain.com \ ma nessun altro dominio utilizza questo proxy, quindi utilizza il file host. (Un port forwarder non viene usato a causa di motivi fuori dal mio controllo)
Dove sono in grado di intercettare (MITM) i dati che passano.
Devo creare due connessioni SslStream adesso ?? Uno per gestire il browser e poi un secondo per gestire il server.
Solo un buon esempio di base sarebbe fantastico: -)