sadrix logoSadriX
Минцифры готовит обязательную регистрацию IMEI смартфонов, купленных за границей
Гайды

Cloudflare Flexible или Full SSL: в чём разница и что выбрать

Практическое руководство по выбору SSL-режима в Cloudflare

04 022 просмотров5 мин
0
Поделиться:TelegramVK

Зачем вообще нужен SSL-режим в Cloudflare

Когда вы подключаете домен к Cloudflare, трафик идёт в два плеча: от посетителя до сервера Cloudflare и от Cloudflare до вашего хостинга (origin). SSL/TLS-режим определяет, как шифруется второе плечо. Первое почти всегда защищено сертификатом Cloudflare (Edge Certificate), а вот со вторым есть варианты — и именно от них зависит, будет ли соединение по-настоящему защищённым или только выглядеть таким.

Многие включают Flexible, потому что «так проще»: сайт сразу начинает открываться по https, замок в браузере есть. Но у этого режима есть скрытая дыра, о которой стоит знать до того, как вы оставите его на продакшене. Ниже — как устроены режимы, чем отличаются, как выбрать и как переключиться без падения сайта.

Требования и что понадобится

  • Домен, добавленный в Cloudflare, с активными NS-записями (оранжевая тучка Proxy включена для нужного A/AAAA/CNAME).

  • Доступ к панели Cloudflare с правами на SSL/TLS.

  • Доступ к серверу/хостингу, чтобы установить сертификат на origin (для Full и Full Strict).

  • Понимание, на каком порту слушает сайт: 443 (https) или 80 (http).

  • Желательно — возможность быстро откатить изменения (бэкап конфигов nginx/apache, доступ к панели хостинга).

Если сайт на shared-хостинге, сертификат на origin часто уже есть (Let's Encrypt от панели). Если VPS — придётся выпустить самостоятельно.

Как устроены три основных режима

Flexible

Браузер → Cloudflare по HTTPS, Cloudflare → origin по HTTP (порт 80). Замок в браузере есть, но между Cloudflare и вашим сервером данные идут открытым текстом. Если сервер и Cloudflare в разных сетях (а это почти всегда), трафик можно перехватить на этом участке.

Плюс: работает без сертификата на сервере. Минус: не настоящая защита, плюс риск бесконечного редиректа, если на origin настроен принудительный https.

Full

Оба плеча по HTTPS, но Cloudflare не проверяет сертификат origin. Подойдёт самоподписанный сертификат или просроченный. Шифрование есть, аутентификации сервера — нет: теоретически возможна подмена origin (MITM) при компрометации сети.

Full (Strict)

Оба плеча по HTTPS, и Cloudflare проверяет, что сертификат origin валиден: выдан доверенным CA (или Cloudflare Origin CA), не просрочен, соответствует домену. Это рекомендуемый режим для продакшена.

Есть ещё вариант Strict (без Full в названии) в старых интерфейсах — по сути то же самое, что Full (Strict).

Почему Flexible опасен на практике

1. Трафик между Cloudflare и сервером не шифруется. Пароли, куки, токены — всё открыто на этом участке. 2. Ложное чувство безопасности. Пользователь видит замок и считает сайт защищённым. 3. Конфликт с редиректами. Если на сервере стоит правило «всегда https», а Cloudflare ходит на порт 80, получается цикл редиректов (ERR_TOO_MANY_REDIRECTS). 4. Проблемы с HSTS. Включать HSTS с Flexible — плохая идея: браузер будет требовать https, а origin его не отдаёт. 5. Не подходит для платежей и форм. Любые чувствительные данные лучше гонять только через Full (Strict).

Flexible оправдан разве что как временная мера на тестовом домене, где нет сертификата на origin, и вы точно не передаёте ничего чувствительного.

Пошагово: как выбрать режим под свой случай

1. Проверьте, есть ли сертификат на origin. Откройте сайт напрямую по IP или через hosts-файл по https. Если браузер ругается на сертификат — он самоподписанный или просрочен. 2. Если сертификата нет вообще — сначала выпустите его (Let's Encrypt через certbot, панель хостинга или Cloudflare Origin CA). 3. Если сертификат самоподписанный — либо переходите на Let's Encrypt, либо используйте Cloudflare Origin CA (он принимается только в режиме Full Strict и только Cloudflare). 4. Если сертификат валидный от публичного CA — можно сразу включать Full (Strict). 5. Если сайт за другим прокси/балансером (например, ещё один CDN) — убедитесь, что цепочка сертификатов корректна, иначе Strict не пройдёт проверку. 6. Проверьте порт origin. Cloudflare по умолчанию ходит на 443 для https. Если сайт слушает нестандартный порт, настройте его в правиле Origin Rules или смените конфиг сервера. 7. Включите режим в SSL/TLS → Overview. 8. Проверьте сайт в браузере и через curl -I https://ваш-домен. 9. Посмотрите логи origin — нет ли ошибок TLS handshake. 10. Только после успешной проверки включайте Always Use HTTPS и HSTS.

Как переключить режим без простоя

Порядок важен: сначала готовим origin, потом меняем настройку.

1. Выпустите и установите валидный сертификат на сервер, проверьте, что https на origin работает. 2. Убедитесь, что сайт корректно отвечает по https напрямую (через hosts-файл). 3. В Cloudflare переключите Flexible → Full, проверьте сайт. 4. Затем Full → Full (Strict), снова проверьте. 5. Включите Always Use HTTPS. 6. Настройте редирект с http на https на стороне origin (или через Cloudflare), чтобы не было двойных редиректов. 7. Включите HSTS, когда убедились, что всё стабильно (осторожно: HSTS сложно откатить).

Если что-то сломалось — верните предыдущий режим, сайт продолжит работать.

Типичные ошибки

  • Оставили Flexible «потому что работает». Работает — не значит безопасно.

  • Включили Full Strict с самоподписанным сертификатом. Получите 526 Invalid SSL Certificate.

  • Забыли про цепочку сертификатов. Промежуточный сертификат не установлен — Strict не проходит.

  • Редирект-петля. Origin принудительно редиректит на https, а Cloudflare в Flexible ходит по http.

  • HSTS при Flexible. Браузер жёстко требует https, а бэкенд его не отдаёт.

  • Сменили режим, не проверив API и мобильные приложения. Они могут ходить на origin напрямую и сломаться.

  • Забыли про поддомены. Режим применяется ко всему зону, проверьте все хосты.

  • Не обновили сертификат вовремя. Let's Encrypt живёт 90 дней, автопродление нужно настроить.

FAQ

В чём главная разница Flexible и Full? В Flexible участок Cloudflare → сервер идёт по HTTP, в Full — по HTTPS. Full безопаснее, Full (Strict) ещё и проверяет сертификат origin.

Можно ли использовать Flexible с HSTS? Технически можно, но не стоит: браузер будет требовать https, а origin его не отдаёт — получите ошибки и петли редиректов.

Подойдёт ли самоподписанный сертификат? Для Full — да, для Full (Strict) — нет. Для Strict нужен валидный сертификат от доверенного CA или Cloudflare Origin CA.

Что такое Cloudflare Origin CA? Сертификат, который Cloudflare выпускает для вашего сервера. Он бесплатный, живёт до 15 лет, но принимается только Cloudflare — браузеры ему не доверяют напрямую.

Почему сайт перестал открываться после переключения на Strict? Скорее всего, сертификат origin просрочен, самоподписан или не совпадает с доменом. Проверьте через openssl s_client -connect ваш-сервер:443 -servername ваш-домен.

Нужен ли сертификат на origin, если стоит Flexible? Формально нет, но настоятельно рекомендуем его поставить и перейти на Full (Strict).

Влияет ли режим на скорость? Практически нет. HTTPS-рукопожатие с origin кэшируется, накладные расходы минимальны.

Итог

Если коротко: Flexible — это компромисс, который экономит сертификат, но оставляет трафик между Cloudflare и сервером открытым. Full — шифрует оба плеча, но не проверяет origin. Full (Strict) — единственный режим, который даёт реальную защиту end-to-end, и именно его стоит держать на продакшене.

Практический план: выпустите валидный сертификат на сервер (Let's Encrypt или Cloudflare Origin CA), переключитесь на Full, затем на Full (Strict), включите Always Use HTTPS и только потом HSTS. Проверяйте каждый шаг в браузере и логах — тогда переключение пройдёт без простоя и без сюрпризов.

Читайте также

Комментарии

Комментарии доступны только зарегистрированным пользователям. Войти

  • Пока нет комментариев. Будьте первым.