Установка Squid 5.5 с поддержкой HTTPS (ssl_bump) на Debian 10 Buster
Squid — это программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и (в случае соответствующих настроек) HTTPS.
Squid — это программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и (в случае соответствующих настроек) HTTPS.
В работе имеется прокси-сервер Squid 4.9, работающий с HTTPS поддержкой. Столкнулся с проблемой в работе мессанджера Whatsapp (Web, Desktop версии) на конечных системах.
Проблема заключается в том что web, desktop версии Whatsapp не соединяются со своими серверами и выдают сообщение что отсутствует подключение к сети интернет. В логах Squid (access.log) видны следующие события при попытке Whatsapp установить соединение:
1582785108.113 154 10.10.15.9 TCP_MISS/400 231 GET https://web.whatsapp.com/ws - ORIGINAL_DST/31.13.72.52 - 1582785108.278 161 10.10.15.9 TCP_REFRESH_MODIFIED/200 390 GET https://web.whatsapp.com/status.json - ORIGINAL_DST/31.13.72.52 text/json
Видно что приложение пытается открыть WebSocket соединение, о чем свидетельствует /ws в строке запроса. Так же в браузере при просмотре кода можно увидеть что не удается выполнить WebSocket соединение (WebSocket connection to ‘wss://web.whatsapp.com/ws’ failed: Error during WebSocket handshake: Unexpected response code: 400)
Рассмотрим как реализовать перехват пользовательских HTTPS-запросов в сеть интернет для дальнейшего анализа и учета их. Все ниже описанные действия производятся на Debian 9 Stretch с установленным прокси-сервером Squid 4.9.
Для работы с HTTPS трафиком необходимо, чтобы Squid был собран с следующими параметрами:
--enable-ssl-crtd --with-openssl
[stextbox id=’warning’]ПОДСКАЗКА. Как собрать из исходников Squid 4.9 с необходимыми параметрами, можно посмотреть из этой статьи.[/stextbox]
Для просмотра HTTPS трафика, прокси-сервер Squid должен иметь свой собственный СА сертификат, который используется для подписывания динамически генерируемых сертификатов для серверов, к которым пользователи посылают запросы.
Выполним генерацию CA сертификата и назначим права доступа для него, выполним команды:
cd /usr/local/etc/squid/ssl openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout squidca.pem -out squidca.pem chown proxy:proxy squidca.pem chmod 640 squidca.pem
Конвертируем сертификат в формат для импорта на пользовательские системы:
openssl x509 -outform der -in squidca.pem -out squidca.crt
[stextbox id=’warning’]ПОДСКАЗКА. Как скачать сертификат из Linux системы в Windows, можно посмотреть из этой статье.[/stextbox]
[stextbox id=’info’]Полученный сертификат необходимо установить в «Доверенные корневые сертификаты» на все пользовательские компьютеры, которые будут работать через прокси-сервер Squid. В доменной среде это проще всего сделать при помощи GPO (Group Policy objects).[/stextbox]