.NET HttpListener / HttpWebRequest / HttpWebResponse и HTTPS - PullRequest
2 голосов
/ 10 июля 2010

Я сделал простой прокси-сервер, используя HttpListener и HttpWebRequest / Response для редактирования и регистрации заголовков http. Все работает отлично и прекрасно по HTTP, но HTTPS - это отдельная история, я читал о MSDN, и там говорится, что HttpListener & HttpWebRequest / Response работает по HTTPS. Очевидно, я что-то делаю не так.

Я указал IE на префиксы ниже и, похоже, не могу перехватить запрос.

string[] prefixes = new string[] { "http://127.0.0.11:8080/", "https://127.0.0.12:8081/" };

HttpListener listener = new HttpListener();
// Add the prefixes.
foreach (string s in prefixes)
{
    _listener.Prefixes.Add(s);
}

Примеры приветствуются и я новичок в c #! :)

Ответы [ 4 ]

2 голосов
/ 10 июля 2010

https: // нельзя так проксировать. HTTPS (как в RFC2818 ) использует SSL / TLS для открытия безопасного туннеля, который проходит через прокси. Как прокси, у вас нет доступа к HTTPS-контенту, потому что он будет просто непрозрачным бинарным зашифрованным кольцом.

То, что вы ожидаете, больше похоже на SHTTP ( RFC2660 ), который практически никто не использует.

Если вы хотите просматривать HTTPS-трафик, исходящий от вашего компьютера (например, для целей отладки), вы можете использовать NetMon . Однако прокси-сервер, который может проверять весь трафик, проходящий через него с других компьютеров, если по определению невозможно сделать для HTTPS, это будет означать, что вы просто преуспели в атаке «человек посередине».

1 голос
/ 12 июля 2010

Это довольно легко сделать с помощью .NET Framework. Если то, что вы хотите сделать, это написать посредника посредника, например, fiddler. Тогда вы можете сделать это легко с SSLStream. Клиент, использующий ваш прокси-сервер, получит предупреждение о недействительном сертификате SSL, но вы все равно можете проксировать трафик и проверять его.

Вот довольно функциональный (включая кеширование!) Прокси-сервер, который выполняет https-завершение вместо туннелирования (человек-посредник). CodeProject: http://www.codeproject.com/KB/IP/HTTPSDebuggingProxy.aspx

1 голос
/ 10 июля 2010

В дополнение к тому, что сказал Cylon Cat, существует также FiddlerCore , который является прокси Fiddler, но в форме, которую вы можете использовать в своем собственном приложении. Поддерживает HTTPS.

0 голосов
/ 10 июля 2010

В зависимости от того, что вы ищете, взгляните на fiddler , широко используемый прокси для отладки в сети.Это действительно обрабатывает HTTPS.

...