Как отключить Cloudflare ECH для обхода блокировок у некоторых провайдеров

Cloudflare включил Encrypted Client Hello (ECH), чтобы лучше скрывать SNI при TLS-handshake. Для части сетей это стало проблемой: соединение зависает или сайт не открывается. Ниже – что такое ECH, как понять, что виноват именно он, и как отключить его через API Cloudflare, в том числе на бесплатном тарифе.

Что такое Cloudflare ECH

Encrypted Client Hello (ECH) шифрует часть Client Hello, в том числе имя хоста (SNI), которое раньше уходило открытым текстом. Браузер и сервер договариваются о параметрах TLS, а промежуточные узлы хуже видят, к какому домену идёт запрос. Идея полезная для приватности, но зависит от того, как сеть и DPI обрабатывают такой handshake.

Не все провайдеры и корпоративные шлюзы корректно пропускают ECH. Где-то оборудование «не понимает» новый формат, где-то политика режет нестандартные TLS-расширения. Итог для посетителя: бесконечная загрузка, обрыв или ошибка соединения, хотя с другого оператора сайт открывается нормально.

Почему из-за ECH сайт может «не открываться»

Клиент с ECH отправляет зашифрованное приветствие. Если DPI или прокси на стороне провайдера ждёт классический plaintext SNI и ломается на ECH, handshake не завершается. Со стороны владельца сайта это выглядит как «у части аудитории не грузится», без явной 5xx в логах origin, потому что запрос часто не доходит до приложения.

Как заподозрить именно ECH

Типичные признаки:

  • сайт доступен с большинства сетей, но стабильно «висит» у абонентов конкретных провайдеров;
  • с того же устройства через другой канал (мобильный интернет, VPN) страница открывается;
  • в чатах вебмастеров или у коллег похожие жалобы на Cloudflare после включения ECH.

Точная диагностика зависит от окружения: можно сравнить доступ с разных ISP, смотреть TLS-handshake в браузере/Wireshark, спросить у затронутых пользователей провайдера. Если картина совпадает, имеет смысл проверить, помогает ли отключение ECH на зоне.

Отключение ECH через Cloudflare API

На платных планах ECH иногда доступен из панели. На Free гибкости меньше, но настройка ech управляется через API: PATCH на settings зоны. Нужны Global API Key (или подходящий API Token с правом править zone settings), email аккаунта и Zone ID.

Шаг 1. Global API Key

  1. Войдите в аккаунт Cloudflare.
  2. Откройте My Profile (профиль в правом верхнем углу).
  3. Раздел API Tokens → напротив Global API Key нажмите View.
  4. Подтвердите вход (при необходимости код на почту), скопируйте ключ и храните его как секрет: полный доступ к аккаунту.

Предпочтительнее API Token с минимальными правами на Zone Settings Edit только для нужной зоны, если политика безопасности это требует. В примерах ниже оставлен классический вариант с Global API Key и email, как в типичных скриптах.

Шаг 2. Zone ID сайта

  1. Выберите домен в панели Cloudflare.
  2. На вкладке Overview внизу справа найдите Zone ID.
  3. Скопируйте значение: оно пойдёт в URL API вместо ID_ZONE.

Шаг 3. PATCH-запрос на отключение ECH

Выполните в терминале (подставьте свои значения):

curl -X PATCH "https://api.cloudflare.com/client/v4/zones/ID_ZONE/settings/ech" \
     -H "X-Auth-Key: YOUR_GLOBAL_API_KEY" \
     -H "X-Auth-Email: YOUR_EMAIL" \
     -H "Content-Type: application/json" \
     --data '{"id":"ech","value":"off"}'

Замените:

  • ID_ZONE – Zone ID домена;
  • YOUR_GLOBAL_API_KEY – Global API Key;
  • YOUR_EMAIL – email входа в Cloudflare.
Успешный ответ API Cloudflare: ECH value off

Шаг 4. Проверка ответа

При успехе в JSON будет "success": true, а у настройки ech значение off. Если видите ошибки, сверьте ключ, email, Zone ID и права токена. Опечатка в любом из полей – самая частая причина отказа.

Фрагмент JSON ответа API после отключения ECH

После off дайте DNS/edge немного времени и проверьте доступ с проблемной сети. Если сайт снова открывается у тех же пользователей, причина с высокой вероятностью была в ECH (или в связке ECH + DPI провайдера).

Альтернативы и компромиссы

Платные тарифы Cloudflare дают больше ручек в UI, но для одной настройки ech=off API обычно достаточно. Отключение ECH упрощает совместимость с «капризными» сетями, но убирает слой приватности SNI, ради которого ECH и делали. Для многих публичных сайтов приоритет – стабильная доступность; для проектов, где приватность handshake критична, стоит отдельно взвесить риск и мониторить, когда провайдеры подтянут поддержку.

Влияние на SEO

Поисковики в первую очередь смотрят на доступность, скорость и контент. Сама настройка ECH редко фигурирует как отдельный SEO-фактор. Важнее, чтобы краулеры и пользователи стабильно открывали сайт. Если из-за ECH часть аудитории не доходит до страниц, отключение скорее помогает, чем вредит.

Практика после отключения

  • держите мониторинг uptime с разных точек (или хотя бы с «жалобных» провайдеров);
  • следите за changelog Cloudflare: поведение ECH и дефолты зон меняются;
  • не светите Global API Key в скриптах в git и в тикетах – ротируйте при утечке;
  • если позже понадобится снова включить ECH, тот же endpoint с "value":"on" (актуальные значения сверяйте в API docs).

Кратко

ECH улучшает приватность TLS, но ломает доступ у части провайдеров. Zone ID + API Key + PATCH settings/ech со значением off – рабочий способ вернуть совместимость, в том числе на free. Сохраните оба скриншота ответа API как эталон успешного отключения и проверяйте сайт с проблемных сетей после применения.

Источники и ссылки


Комментарии загружаются…