Назад | Перейти на главную страницу

Пользовательская страница ошибок (deny_info) для HTTPS

У меня есть следующие ACL в моем squid.conf с настраиваемым файлом «страницы ошибок» с именем ERR_TJS, расположенным в «/ usr / share / squid / errors / English»:

acl tjs_sites url_regex "/etc/squid/sites_regex.acl"
acl tjs_domains dstdomain "/etc/squid/domains.acl"
http_access deny tjs_sites
http_access deny tjs_domains
deny_info ERR_TJS tjs_sites
deny_info ERR_TJS tjs_domains

Специально для файла ACL "/etc/squid/domains.acl" у меня есть следующие домены:

flyordie.com
www.flyordie.com
king.com
www.king.com
miniclip.com
www.miniclip.com
kongregate.com
www.kongregate.com
clashroyale.com
www.clashroyale.com
facebook.com
www.facebook.com
instagram.com
www.instagram.com
snapchat.com
www.snapchat.com

Проблема в том, что когда HTTPS-запрос выполняется к Squid, вместо того, чтобы давать настраиваемую страницу ошибки для "https://www.facebook.com", например, показывает стандартную страницу с ошибкой, отправленную браузером, как эта из Mozilla Firefox:

Прокси-сервер отказывается подключаться

Firefox настроен на использование прокси-сервера, который отклоняет соединения.

Проверьте настройки прокси-сервера, чтобы убедиться, что они верны. Обратитесь к своему сетевому администратору, чтобы убедиться, что прокси-сервер работает.

Я нашел эту информацию в документации по Squid:

Пользовательские страницы ошибок не отображаются для HTTPS

HTTPS использует сообщения HTTP CONNECT для ретрансляции через прокси. Из-за поведения браузера при обработке этих сообщений CONNECT (описанных в https://bugzilla.mozilla.org/show_bug.cgi?id=479880) любая настраиваемая страница ошибок, созданная прокси-сервером, игнорируется, и вместо нее отображается общая страница браузера.

Обычно на этой странице браузера упоминается сбой подключения или другие не относящиеся к делу детали.

Фактически, любой ответ, кроме 200 OK, полностью отбрасывается браузером и отображается та же страница шаблона браузера. Это может привести к очень странным проблемам аутентификации при использовании HTTPS через аутентифицированный прокси, а также в схемах аутентификации, в которых тело сообщения 407 имеет значение.

Я слышал, что с помощью Squid вы можете перехватывать некоторые "состояния" HTTP / HTTPS-соединений, например, обрабатывать эти сообщения CONNECT ..

Мои вопросы: есть ли способ применить пользовательский deny_info как этот, который у меня есть для запросов HTTPS, возможно, манипулируя этими сообщениями CONNECT или любым другим способом? И как я могу этого добиться (пожалуйста, на каком-нибудь примере)?

Когда браузер настроен на использование прокси для HTTPS, он сначала пытается установить туннель CONNECT через прокси на удаленный сайт. Любой HTTP-ответ от прокси, кроме «200 Tunnel Ready», игнорируется и приводит к ошибке «Прокси-сервер отклоняет соединение». Это можно исправить сначала расшифровка подключение, а затем отказать в доступе к нему, как вы настроили. Посмотри пожалуйста https://docs.diladele.com/faq/squid/cannot_connect_to_site_using_https.html статья, описывающая это более подробно.