Cloudflare поддерживает четыре режима SSL/TLS. Каждый описывает, как зашифрован трафик между посетителем, Cloudflare и вашим сервером. Неправильный выбор приводит либо к бесконечным редиректам, либо к незашифрованному участку пути между Cloudflare и сервером — а это открытый канал для перехвата паролей и куки сессии, даже если браузер посетителя показывает замок в адресной строке.
Режимы SSL/TLS
| Режим | Браузер → CF | CF → Сервер | Когда использовать |
|---|---|---|---|
| Off | HTTP | HTTP | Никогда |
| Flexible | HTTPS | HTTP | Нет SSL на сервере (плохо) |
| Full | HTTPS | HTTPS (любой сертификат) | Самоподписанный сертификат |
| Full (Strict) | HTTPS | HTTPS (валидный сертификат) | Рекомендуется |
Почему Full (Strict) — правильный выбор
- Трафик зашифрован на всём пути, а не только от браузера до CDN.
- Защита от атак «человек посередине» между Cloudflare и сервером — критично, если сервер стоит не в вашем дата-центре.
- Стандарт безопасности для production: соответствует требованиям PCI DSS и большинства политик безопасности.
Как включить Full (Strict)
Cloudflare Dashboard → SSL/TLS → Overview → Full (strict). На сервере должен быть валидный SSL-сертификат — подойдёт Let's Encrypt или сертификат от Cloudflare.

Используйте Cloudflare Origin Certificate вместо Let's Encrypt для максимальной надёжности: SSL/TLS → Origin Server → Create Certificate. Такой сертификат действует 15 лет и доверяется только Cloudflare, поэтому напрямую по IP сайт через него не откроется — это дополнительный слой защиты origin-сервера.
Разбор типичных ошибок
Коды 520–526 в ответе Cloudflare почти всегда связаны именно с режимом SSL/TLS; полный список кодов разобран в статье ошибки Cloudflare 520-525.
- ERR_TOO_MANY_REDIRECTS — сервер настроен редиректить HTTP на HTTPS, а Cloudflare в режиме Flexible подключается к серверу по HTTP: получается бесконечная петля «редирект → HTTP → редирект».
- ERR_SSL_VERSION_OR_CIPHER_MISMATCH — на origin-сервере отключены современные протоколы TLS 1.2/1.3 или устаревший OpenSSL не поддерживает нужные шифры для рукопожатия с Cloudflare.
- 521 Web Server Is Down при режиме Full (Strict) — сервер слушает только HTTP на 80 порту, а HTTPS на 443 не отвечает: Cloudflare пытается достучаться по HTTPS и получает отказ соединения.
- 526 Invalid SSL Certificate — сертификат на сервере просрочен, самоподписанный или выписан не на тот домен, а режим стоит Full (Strict), который требует валидности цепочки.
- 525 SSL Handshake Failed — Cloudflare не смогла договориться с сервером о протоколе TLS во время рукопожатия; обычно причина в том, что на сервере отключены все протоколы, которые поддерживает Cloudflare, либо порт 443 занят другим сервисом.
Сравнение источников сертификата для origin-сервера
| Источник | Срок действия | Доверие вне Cloudflare | Автопродление |
|---|---|---|---|
| Let's Encrypt | 90 дней | Да, публичный CA | Через certbot / cron |
| Cloudflare Origin CA | 15 лет | Нет, только для CF | Не требуется |
| Самоподписанный | На усмотрение | Нет | Вручную |
Принудительный HTTPS через Cloudflare
SSL/TLS → Edge Certificates → Always Use HTTPS → On. Cloudflare будет редиректировать HTTP на HTTPS на уровне CDN, ещё до того, как запрос дойдёт до сервера — это снимает нагрузку с origin и исключает риск неправильного редиректа в приложении.
Когда Full (Strict) не подходит
- Сервер только разворачивается и валидного сертификата ещё нет — временно используйте Full с самоподписанным, но не Flexible, чтобы не гонять трафик открытым текстом.
- Origin стоит за динамическим IP без DNS-записи, на которую можно выпустить Let's Encrypt — тогда единственный практичный вариант это Cloudflare Origin Certificate, привязанный к IP, а не к домену.
- Легаси-приложение принудительно проверяет соответствие имени сертификата и не понимает сертификат от нестандартного CA — иногда приходится временно держать Full вместо Strict, пока приложение не обновят.
Как проверить, что режим настроен верно
# Проверяем сертификат, который видит внешний клиент
curl -vI https://example.com/ 2>&1 | grep -E 'SSL|subject|issuer'
# Проверяем, что HTTP редиректит на HTTPS одним прыжком
curl -I http://example.com
# Ожидаем: HTTP/1.1 301, Location: https://example.com/
# Проверяем сертификат сервера напрямую, минуя Cloudflare (через hosts-файл)
curl -vI --resolve example.com:443:SERVER_IP https://example.com/ 2>&1 | grep issuer
Если первая команда показывает сертификат Cloudflare, вторая — один редирект без петли, а третья подтверждает валидный сертификат на самом сервере, режим Full (Strict) настроен корректно.
Никогда не используйте Flexible, если на сервере уже настроен HTTPS. Это создаёт редиректную петлю: Cloudflare подключается по HTTP, сервер редиректит на HTTPS, Cloudflare снова подключается по HTTP — и так до ошибки браузера ERR_TOO_MANY_REDIRECTS.