Как передать SSL HttpRequest через сервер с TCPListener? - PullRequest
0 голосов
/ 02 марта 2012

Извините за плохой заголовок, но в основном я пытаюсь добиться того, чтобы у меня было приложение, которое будет использовать TCPListener для ожидания входящих соединений, а затем переадресовывать их по назначению.Пересылка обычных запросов Http достаточно проста, но какие шаги мне нужно предпринять, чтобы «прокси» HTTPS-соединение?

Ответы [ 3 ]

3 голосов
/ 02 марта 2012

Вы не можете читать содержимое коммуникаций HTTPS, не будучи ни источником, ни местом назначения.Никто в середине не может подслушать.Поэтому, если вы не знаете пункт назначения заранее (скажем, если кому-то удастся отправить вам целевой IP вне диапазона), вы застряли.

NITPICK EDIT: Это не совсем так.Вы можете притвориться пунктом назначения и помешать процессу рукопожатия.Вы сможете увидеть содержимое запроса, но пользователь увидит предупреждение о неверном сертификате.

1 голос
/ 02 марта 2012

Если у вас нет контроля над клиентом, я не вижу способа "прокси" для соединения https.

  • Если есть возможность изменить настройки прокси клиента, вы можете притворитьсябыть SOCKS-прокси.
  • Если, если возможно, добавить новую запись в файл хостов клиента (как если бы вы были адресатом), вы можете обойти связь.нет способа прочитать содержание сеанса.
0 голосов
/ 02 марта 2012

На самом деле это довольно просто в теории - вам просто нужно знать полный сертификат сервера и, возможно, сертификат клиента, если таковой используется, чем правильно реализовать рукопожатие для обеих сторон.

На практике - у вас нет возможности получить сертификат SSL для сервера, если вы не являетесь его владельцем, и то же самое для сертификата клиента.

Я бы рекомендовал прочитать объяснение того, как Fiddler выполняет дешифрование HTTPS: http://www.fiddler2.com/Fiddler/help/httpsdecryption.asp

...