Как перенаправить запрос HTTPS CONNECT с помощью явного прокси-сервера Squid

Как перенаправить запрос HTTPS CONNECT с помощью явного прокси-сервера Squid

Я хочу заблокировать определенные URL-адреса для некоторых пользователей моей внутренней сети. Для этой цели я использую явный прокси-сервер на основе squid с redirect_program. Клиенты настроены на использование файла pac для https-адресов, что заставляет их направлять свои https-запросы на явный прокси-сервер.

Проблема в том, что перенаправление любого запроса CONNECT для https url на заблокированный URL страницы не удается. Я пробовал заблокированные URL страниц как на http, так и на https, но не смог добиться успеха. По некоторым причинам я не хочу использовать прозрачный прокси с ssl bumping.

  1. Safari выдает ошибку «Safari не может открыть страницу. Ошибка была «Возникла проблема с установлением защищенного туннеля через веб-прокси-сервер»»

  2. Chrome выдает ошибку «Эта веб-страница недоступна. ERR_TUNNEL_CONNECTION_FAILED».

Вот строка из access.log дляhttps://www.yahoo.com.

07/окт/2015:01:41:29 -0500 74 172.0.0.9 TCP_REDIRECT/302 253 ПОДКЛЮЧИТЬСЯ www.yahoo.com:443 - HIER_NONE/- -

Я где-то читал, что браузер ожидает начала SSL/TLS-рукопожатия после запроса на подключение, и поэтому он терпит неудачу. Вот цитата из документации squid redirector.

«Изменение URL-адресов и, в частности, перенаправление возможны только при использовании определенных методов, а некоторые из них, такие как POST и CONNECT, требуют особой осторожности».

Там не говорится, что перенаправление невозможно для метода CONNECT. Однако нигде не упоминается, как можно перенаправить POST и CONNECT (меня особенно интересует CONNECT) или не приводится ни одного примера.

Пожалуйста, расскажите мне, как перенаправить запросы https connect на заблокированную страницу. Если это невозможно, есть ли способ обойти это с явным прокси? Спасибо.

Я использую Squid 3.5.4 на Ubuntu.

решение1

К сожалению, это невозможно без предварительного взлома (расшифровки) SSL-соединения. Браузеры по своей конструкции запрещают любую дополнительную полезную нагрузку/перенаправление из неудавшихся запросов CONNECT. Более формальное описание см. в разделе -http://docs.diladele.com/faq/squid/невозможно_подключиться_к_сайту_используя_https.html.

Если выделатьрешите выполнить расшифровку SSL, тогда можно сначала разрешить успешно выполнить запрос CONNECT, а затем заблокировать/перенаправить следующий HTTP-запрос, поступающий через этот установленный туннель соединения. Пожалуйста, учтите, что это может быть даже не HTTP, так как некоторые приложения используют прокси-туннелирование CONNECT для своих собственных протоколов (например, Skype).

Также следует иметь в виду, что если приложение использовало технику «SSL pinning» при отправке запросов CONNECT к прокси-серверу, оно откажется работать с расшифрованными соединениями.

Связанный контент