Сайт на Cloudflare перестал работать. Как отключить Encrypted Client Hello
В начале ноября известный поставщик услуг CDN (Content Delivery Network) и WAF (Web Application Firewall) Cloudflare неожиданно включил технологию Encrypted Client Hello (ECH) для всех поддерживаемых сайтов как настройку по умолчанию. Суть Encrypted Client Hello заключается в том, что при установлении зашифрованного SSL-соединения между браузером и сайтом наименование сайта шифруется так же, как и содержимое передаваемых страниц. Технология была создана для противодействия перехвата имени посещаемого сайта промежуточными участниками информационного обмена, например, провайдерами.
Задумка в целом благая, призванная повысить безопасность пользователей в сети и исключить сбор информации о посещаемых ими сайтов. Однако ранее Роскомнадзор заблокировал ту же технологию, так как она не позволяет ТСПУ (техническим средствам противодействия угрозам) избирательно блокировать запрещённые на территории России сайты. Два этих события привели к тому, что посетители сайтов, настроенных посредством Cloudflare, потеряли к ним доступ. Соединение завершается сбросом соединения с сообщением в браузере о невозможности подключения к серверу: ERR_CONNECTION_RESET
.
Если в планах владельца сайта нет отказа от услуг Cloudflare, отключить принудительно включённый ECH можно следующим образом:
1. Убедитесь, что ECH действительно включён для вашего домена
Это можно сделать по ссылке: https://dns.google/resolve?name=mydomain.ru&type=HTTPS (где mydomain.ru имя вашего домена). Строка вида ech=AEXDQBB1gAgAC+DewoJnvjBdX3vJDgiw+kbZPOHff4yjKZCNNAkUaDyiSwfEAAEAAQASY2xvdWRmbGFyZS2lY2guY29tAAA=
в разделе Data ответа подтвердит, что технология ECH действует.
2. Получите значения Global API Key и Zone ID для вашего домена, подключённого к Cloudflare
- Global API Key находится на странице https://dash.cloudflare.com/profile/api-tokens Нажмите View, чтобы увидеть и скопировать его.
- Zone ID размещён в разделе API в правом нижнем углу страницы Overview.
3. Отключение ECH посредством API Cloudflare
После получения значений Global API Key и Zone ID для конкретного сайта достаточно дать следующую команду curl, чтобы отключить Encrypted Client Hello:
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/ZONE_ID/settings/ech" \ -H "X-Auth-Email: ACCOUNT_EMAIL" -H "X-Auth-Key: GLOBAL_API_KEY" -H "Content-Type:application/json" --data '{"id":"ech","value":"off"}'
Вместо ZONE_ID необходимо подставить полученный ранее Zone ID, вместо ACCOUNT_EMAIL — email-адрес аккаунта, а также актуальное значение GLOBAL_API_KEY, соответственно.
Ответ: {"result":{"id":"ech","value":"off","modified_on":null,"editable":true},"success":true,"errors":[],"messages":[]}
подтвердит успешное отключение Encrypted Client Hello. Теперь сайт за Cloudflare будет открываться у российских пользователей.
К сожалению, для пользователей бесплатного тарифного плана Free отключение ECH в веб-интерфейсе не предусмотрено и сделать это можно лишь через API. Зато счастливые обладатели платных тарифов могут легко сделать это в разделе SSL/TLS → Edge Certificates → Encrypted ClientHello (ECH) → Disabled.