2009-08-21 11 views
1

Ich baue einen Proxy-Server in C# und ich versuche herauszufinden, wie HTTPS-Anfragen zu unterstützen, und lesen Sie sie durch. Können Sie Artikel, Tutorials oder Open-Source-Projekte vorschlagen, in denen ich mehr über die Implementierung dieser Funktion erfahren kann?Erstellen von HTTPS-Unterstützung in einem C# -Proxyserver

Antwort

0

Wenn Sie "durchlesen" meinen, dass "den Inhalt der Anfrage entschlüsseln", lautet die Antwort "Sie können nicht". Was Sie beschreiben, ist ein sogenannter "Mann in der Mitte Angriff" (MITM). Offensichtlich ist SSL davor geschützt.

Wenn Sie jetzt die Kontrolle über die Clients mit Ihrem Proxy haben (irgendeine Art von Unternehmensumgebung oder Sie erstellen einen Konkurrenten für Fiddler), können Sie SSL untergraben, indem Clients Ihren Zertifikaten vertrauen und dann Ihr MITM implementieren Standard-.NET-Crypto-APIs.

PS. Ein gutes Beispiel für diesen Ansatz finden Sie unter Fiddler mit Reflector. :)

+0

Besser noch, benutze nur Fiddler. www.fiddler2.com/fiddler/dev/ – EricLaw

+0

Es wäre hilfreich, wenn Sie Ihre genauen Bedürfnisse beschreiben würden. Warum schreiben Sie beispielsweise einen Proxy anstelle einer vergleichbar einfacheren Browsererweiterung? Ich bin mir nicht sicher, was "stats auf wie lange die SSL-Verbindung auch" bedeutet. – EricLaw

+0

Es gab einen Tippfehler auf dem vorherigen Post "auch" sollte "genommen" werden. Ich muss einfach herausfinden, wie lange es dauert, einen SSL-Handshake mit dem Server für HTTPS-Aufrufe einzurichten, die von Objekten ausgegeben werden, die im Webbrowser-Steuerelement gerendert wurden. Momentan verlasse ich mich auf die Passthrough-App, um die Zeit für jede Zeitkomponente der Anfrage zu bekommen, aber das Problem dabei ist, dass Sie nicht zwischen der regulären Connect-Zeit und der SSL-Handshake-Zeit unterscheiden können. Deshalb habe ich die Proxy-Route ausprobiert, aber das hat das ganze Zertifikat Problem. Vielleicht gibt es etwas Offensichtliches und Einfacheres, das ich nicht sehe. – webly