[proxy] HTTPS-соединения через прокси-серверы



Answers

насколько я помню, вам нужно использовать запрос HTTP CONNECT на прокси. это преобразует соединение запроса в прозрачный туннель TCP / IP.

поэтому вам нужно знать, поддерживает ли прокси-сервер этот протокол.

Question

Возможно ли иметь HTTPS-соединения через прокси-серверы? Если да, то какой прокси-сервер разрешает это?

Дублируется с использованием прокси-сервера Socks 5 с Apache HTTP Client 4?




Короткий ответ: это возможно и может быть выполнено либо с помощью специального HTTP-прокси, либо с прокси-сервера SOCKS.

Прежде всего, HTTPS использует SSL / TLS, который по дизайну обеспечивает сквозную безопасность, устанавливая безопасный канал связи по небезопасному. Если прокси-сервер HTTP способен видеть содержимое, то это подслушивающее устройство «человек в середине», и это побеждает цель SSL / TLS. Поэтому, если мы хотим проксировать через простой HTTP-прокси, должны быть сыграны некоторые трюки.

Фокус в том, что мы превращаем HTTP-прокси в прокси-сервер TCP со специальной командой CONNECT . Не все HTTP-прокси поддерживают эту функцию, но многие делают это сейчас. Прокси-сервер TCP не может видеть HTTP-контент, передаваемый в ясном тексте, но это не влияет на его способность пересылать пакеты туда и обратно. Таким образом, клиент и сервер могут взаимодействовать друг с другом с помощью прокси. Это безопасный способ проксирования данных HTTPS.

Существует также небезопасный способ сделать это, в котором HTTP-прокси становится человеком в середине. Он получает инициированное клиентом соединение, а затем инициирует другое подключение к реальному серверу. В хорошо реализованном SSL / TLS клиент будет уведомлен о том, что прокси-сервер не является реальным сервером. Таким образом, клиент должен доверять прокси, игнорируя предупреждение о том, что все работает. После этого прокси просто расшифровывает данные из одного соединения, повторно расшифровывает и передает его в другой.

Наконец, мы можем прокси HTTPS через прокси SOCKS , потому что прокси-сервер SOCKS работает на более низком уровне. Вы можете считать прокси SOCKS как TCP, так и прокси UDP.




Вы можете выполнить это, используя методы «человек-в-середине» с динамической генерации SSL. Взгляните на mitmproxy - это прокси-сервер MITM, основанный на Python.




Я попробовал

  • start tunneling: ssh -N -D 12345 login@proxy_server
  • Установка прокси-сервера в настройках firefox как localhost:12345
    • и тикание «используйте этот прокси для всех протоколов»

но это привело к ошибке «Небезопасное соединение» всякий раз, когда я пытался подключиться к веб-сайту https.

Решение заключалось в

  • «отключить» «использовать этот прокси для всех протоколов»
  • установить прокси-сервер «localhost: 12345» только как прокси-сервер SOCKS
  • и оставить прокси HTTP, прокси SSL, прокси FTP

Ссылка на документацию по цифровому океану

Как безопасно маршрутизировать веб-трафик без VPN с использованием туннеля SOCKS




Related



Tags

proxy   https