Cloudflare и РКН
Недавно Cloudflare включил всем по умолчанию Encrypted Client Hello (ECH) и сайты подключенные к нему перестали открываться в России, так как РКН начал блокировать эту технологию.
Конечно последовали призывы об отказе от Cloudflare, но никто не может предложить такое же количество и качество доступных и бесплатных инструментов для владельцев сайтов (DNS, базовую защиту от DDoS и еще много всего). Владельцы небольших сайтов или, скажем так, некоммерческих в подавляющем большинстве случаев просто не потянут стоимость услуг платных альтернатив.
Encrypted Client Hello (ECH)
ECH - это дополнительная функция по шифрованию первоночального обращения к сайту («hello», «рукопожатие»), что обеспечивает конфиденциальность адреса посещаемого сайта. Без ECH первоночальное обращение к сайту производится в незашифрованном виде и информация об адресе этого сайта становится доступной для интернет-провайдера или других неавторизованных сторон.
Блокировка этой технологии связана стем, что ECH позволяет обходить блокировки РКН (это, скажем так, побочный эффект этой технологии).
Так что же делать, чтобы сайт, использующий Cloudflare, стал снова доступен?
Если вы используете Cloudflare на своем сайте
Есть несколько вариантов решения этой проблемы.
Отключить проксирование трафика
Это самый радикальный метод, который, как мне кажется, стоит отбросить сразу.
Если все же решитесь это сделать, то вам необходимо зайти в свою панель управления Cloudflare, выбрать необходимый сайт, зайти в DNS -> Records (Записи), нажать Edit и выключить Proxy Status.



И не забудьте после этого сохранить изменения.
Платные тарифы Cloudflare
Если вы используете платные тарифу Cloudflare, то вы просто можете отключить ECH в настройках.
Для этого зайдите в панель Cloudflare и выберите необходимый сайт. Далее переходите в SSL/TLS и выбираете Edge Certificates. Там необходимо выключить Encrypted Client Hello.
Бесплатные тарифы Cloudflare
Здесь есть два варианта.
Первый - это выключить TLS 1.3 в настройках.
Для этого зайдите в панель Cloudflare и выберите необходимый сайт. Далее переходите в SSL/TLS и выбираете Edge Certificates. Minimum TLS Version выбираете 1.2 и выключаете TLS 1.3.


Изменения могут произойти не сразу.
Теперь ко второму варианту. Пока что на бесплатном тарифе ECH можно отключить через API (оставит ли Cloudflare эту возможность в будущем покажет только время). Этот способ отключит именно ECH и оставит включенным TLS 1.3.
Для использования этого варианта необходимо немного подготовится. Потребуются:
- Zone ID
- Адрес почты аккаунта
- Global Api Key
Для того, чтобы узнать Zone ID выберите интересующий вас домен и прокрутите страницу чуть ниже и скопируйте Zone ID (внизу справа).

С адресом почты все просто.
Global API Key. В правом верхнем углу необходимо выбрать свой аккаунт и перейти в My profile и далее в API tokens. Нажать на View с Global API key (будет необходимо ввести свой пароль от аккаунта).

Команда для Windows:
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\"}"Команда для Linux:
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, Account Email и Global_API_Key на свои значения. И в настройках Cloudflare TLS 1.3 должно быть включено.
Все готово. Теперь надо немного подождать. Для ускорения можно попробовать сбросить кэш в Cloudflare: Caching -> Configuration -> Purge everything.