SCROLL
Среднее время на прочтение: 1 мин.

Работа мессанджера Whatsapp через прокси-сервер Squid 4.9

В работе имеется прокси-сервер 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

Чтобы решить данную проблему нужно чтобы Squid не пытался посмотреть HTTPS трафик в направлении whatsapp адресов, а просто выполнял соединение.

Для этого создадим файл (прим. /etc/squid/sites_webwhatsapp.txt) в котором укажем для каких сайтов не предпринимать никаких действий:

/etc/squid/sites_webwhatsapp.txt
w[0-9]+\.web\.whatsapp\.com$
\.web\.whatsapp\.com$
web\.whatsapp\.com$

В конфигурационном файле /etc/squid/squid.conf указываем следующие параметры:

/etc/squid/squid.conf
acl whatsapp ssl::server_name_regex -i "/etc/squid/sites_whatsapp.txt"

acl step1 at_step SslBump1

ssl_bump splice whatsapp
ssl_bump peek step1
ssl_bump bump all
Обращаю внимание что действие splice должно быть до каких либо действий с HTTPS трафиком.

Перечитываем конфиг — /etc/init.d/squid reload и проверяем работу.

Обсуждение

0 комментариев

Нет комментариев.