Loading...

Справка CDN.com.tr

Включите HSTS для ваших хостов

Пресет безопасности Hsts заставляет edge отправлять Strict-Transport-Security: max-age=31536000 в HTTPS-ответах, поэтому браузер, однажды увидевший ваш сайт, весь год отказывается открывать его по обычному HTTP.

Включите HSTS для ваших хостов

Пресет безопасности Hsts заставляет edge отправлять Strict-Transport-Security: max-age=31536000 в HTTPS-ответах, поэтому браузер, однажды увидевший ваш сайт, весь год отказывается открывать его по обычному HTTP.

Что сделать до и после включения

HSTS имеет смысл только поверх работающих сертификатов, и лучше всего воспринимается вместе с пояснением, что именно обещает этот заголовок.

Сначала сертификаты

Auto SSL

Каждому хосту нужен валидный сертификат до того, как HSTS сделает откат на HTTP недоступным.

Открыть раздел
Та же панель

Security page

Другие общеаккаунтные настройки рядом с полем пресета: IP-списки, защита от хотлинков, лимиты запросов.

Открыть раздел
Контекст

Что такое HSTS?

Что обещает браузеру этот заголовок, почему важен max-age и что добавил бы preload.

Читать руководство

Путь в панели

  1. Management Panel
  2. CDN Accounts
  3. Delivery Rules
  4. Security defaults
  5. Security Setting (preset multiselect)

Предварительные требования

  • Каждый хост, обслуживаемый этим аккаунтом, уже должен работать по HTTPS с валидным сертификатом — включая хосты с ресурсами и любые поддомены, на которые вы ссылаетесь с сайта.
  • Смешанный контент нужно устранить заранее. Как только HSTS вступит в силу, ресурс по http:// не будет повторно запрошен по HTTP — он просто не загрузится.
  • Нужна роль, позволяющая сохранять delivery rules: владелец или редактор. Просмотрщик может читать страницу, но не может её сохранить.

Модель принятия решений

Готовы ли вы к HSTS?

Это единственное реальное решение. HSTS безопасен для сайта, полностью работающего на HTTPS, и болезнен для того, что работает не так.

  • Готов: каждый хост на аккаунте и каждый ресурс, который он загружает, отвечает по HTTPS с валидным сертификатом.
  • Не готов: хост с изображениями, старый поддомен или внутренний инструмент по-прежнему отвечает только по HTTP. Сначала устраните это.
  • Не уверены: откройте свой сайт с открытой консолью браузера и проверьте наличие предупреждений о смешанном контенте, прежде чем включать пресет.

Что покрывает этот пресет, а что нет

Знание точных границ избавляет и от лишней самоуверенности, и от обращения в поддержку с вопросом, почему поддомен не затронут.

  • Покрывает: хост, который выдал ответ, на один год, по HTTPS.
  • Не покрывает: поддомены — заголовок не содержит директиву includeSubDomains.
  • Не покрывает: preload-списки — сайт не отправлен производителям браузеров.

Пошаговое руководство

1

Проверьте, что HTTPS настроен полностью

Этот шаг — весь риск функции. Всё, что после него, — два клика.

  • Откройте свой сайт с открытой консолью разработчика и проверьте наличие предупреждений о смешанном контенте.
  • Выведите список хостов на аккаунте в Content Delivery Points и откройте каждый по https://.
  • Убедитесь, что каждый сертификат валиден и срок его действия не подходит к концу, в SSL Management.

Ожидаемый результат: Каждый хост на аккаунте загружается по HTTPS без предупреждений о сертификате или смешанном контенте.

cdnctl equivalent
curl -sI https://www.example.com/ | head -1
curl -sI https://assets.example.com/ | head -1
2

Добавьте пресет Hsts

Поле Security Setting — это мультиселект пресетов безопасности. Добавление Hsts не убирает остальные.

  • Выберите аккаунт и откройте Delivery Rules.
  • Прокрутите до Security defaults и нажмите на поле Security Setting (его плейсхолдер предлагает выбрать или найти пресет).
  • Выберите Hsts из списка, оставьте выбранными уже установленные пресеты и сохраните.

Ожидаемый результат: Набор пресетов сохранён, и запущен деплой, так что конфигурация edge пересобирается с включением HSTS.

cdnctl equivalent
POST /api/accounts/update_account_presets/<account_uuid>
{"type":"security","presets":["Waf","Hsts"]}
The call replaces the whole preset set for that type — send every preset you want to keep.
3

Проверьте заголовок на реальном запросе

Сохранённый пресет — это намерение; заголовок ответа — это факт.

  • Выполните проверку по HTTPS ниже и убедитесь в наличии заголовка и его значения max-age.
  • Выполните ту же проверку по http:// и убедитесь, что заголовка там нет — это корректное поведение.
  • Откройте сайт в свежем профиле браузера и убедитесь, что ничего не сломалось.

Ожидаемый результат: HTTPS-ответ содержит Strict-Transport-Security: max-age=31536000, и сайт загружается нормально.

cdnctl equivalent
curl -sI https://www.example.com/ | grep -i strict-transport
curl -sI http://www.example.com/ | grep -i strict-transport

Проверка

  • HTTPS-ответ содержит Strict-Transport-Security: max-age=31536000.
  • Обычный HTTP-ответ его не содержит.
  • Ни один хост на аккаунте больше не работает только по HTTP, и ни одна страница не сообщает о смешанном контенте.
  • Вы приняли, что снятие пресета не удаляет заголовок из браузеров, которые его уже сохранили.

Сценарии использования

Ваш сайт полностью на HTTPS, и вы хотите закрыть разрыв первого запроса: первый клик за день всё ещё уходит как http:// и только потом перенаправляется. HSTS полностью убирает этот запрос — браузер выполняет апгрейд до того, как запрос покинет устройство.

Краткий порядок действий

  1. Убедитесь, что каждый хост на аккаунте уже отвечает по HTTPS с валидным сертификатом. HSTS убирает откат на HTTP, поэтому всё, что до сих пор доступно только по HTTP, станет недоступным для посетителей, увидевших заголовок.
  2. Откройте Delivery Rules для аккаунта и найдите панель Security defaults.
  3. Откройте поле пресета Security Setting, выберите Hsts и сохраните. Ранее выбранные пресеты, например Waf, остаются выбранными — это поле-мультиселект, и сохранение заменяет весь набор.
  4. Дождитесь, пока конфигурация дойдёт до edge, затем проверьте заголовок на реальном запросе.

Проверки

  • Заголовок отправляется только в HTTPS-ответах. Отсутствие Strict-Transport-Security в http:// ответе — это корректное поведение, а не ошибка.
  • Значение — max-age=31536000, то есть один год, без includeSubDomains и без preload. Этот пресет не покрывает поддомены — каждый хост закрепляется своим собственным ответом.
  • Сайт не отправлен ни в один preload-список браузеров, поэтому отключение HSTS никогда не требует обращения к производителю браузера.
  • Снимите пресет — и edge перестанет отправлять заголовок, но браузеры, уже получившие его, продолжат принудительно использовать HTTPS, пока не истечёт сохранённый max-age. Относитесь к HSTS как к двери, которая закрывается в одну сторону на срок до года, а не как к переключателю для теста.