2.12.10. Настройка HSTS

HSTS (HTTP Strict Transport Security) — механизм принудительного перехода с протокола HTTP на HTTPS. Технология появилась в 2012 году и на сегодняшний день поддерживается всеми браузерами. Данная политика указывает браузеру принудительно изменять все адреса домена с протокола HTTP на HTTPS при помощи заголовка Strict-Transport-Security, описано в стандарте RFC 6797. Важно учитывать, что политика HSTS помещается в кеш на указанный срок и в это время вернуться на протокол HTTP не выйдет, кроме ручной очистки политик безопасности браузера.

Важные моменты:

  • Политика HSTS применяется только после первого входа на сайт. При первом посещении браузер ещё не знает о заголовке и запрос может выполняться по HTTP.
  • Не все браузеры поддерживают данную технологию. Если поддержки нет, то она будет проигнорирована. Поддержка реализована во всех браузерах на базе Chromium (Chrome, Opera, Yandex и другие) и в Firefox.
  • Политика HSTS сохраняется для определённых доменов на период, указанный в передаваемом заголовке. До момента истечения этого периода невозможно перейти на протокол HTTP без ручной очистки кеша.
  • Не следует сразу же указывать большой период в max-age. Установите параметр в 900 для проверки работоспособности сайта и если всё будет в порядке, можно будет изменить его на более высокий.
  • Добавление заголовка HSTS в .htaccess возможно только в рамках веб сервера Apache, в рамках LiteSpeed или PHP-FPM правило в .htaccess будет игнорироваться.
  • Для получения рейтинга «A+» в тесте SSL Labs период кеширования должен быть не менее 180 дней (15552000 секунд).
  1. Напротив параметра «Заголовок Strict-Transport-Security (HSTS)» укажите период кеширования политики в браузерах и сохраните изменения.
  2. Если действие заголовка должно распространяться на все поддомены, дополнительно установите галочку возле «Добавлять атрибут includeSubDomains для заголовка Strict-Transport-Security».
  3. Проверьте работу заголовка на hstspreload.org.
  1. Добавьте в файл .htaccess в каталоге сайта такую строку:
    Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
    • max-age — период кеширования политики в браузерах в секундах.
    • includeSubDomains — применить политику ко всем поддоменам.
    • preload — включение политики для домена в поддерживаемых браузерах. Обеспечивает изменение протокола HTTP на HTTPS до загрузки сайта.
  2. Проверьте работу заголовка на hstspreload.org.
Содержание