Налаштування HSTS (HTTP Strict Transport Security) для сайту
HSTS — механізм, при якому браузер запам'ятовує, що сайт доступний тільки по HTTPS, і більше не пробує HTTP-з'єднання. Один заголовок у конфігурації сервера усуває цілий клас атак типу SSL stripping.
Як це працює
Сервер відправляє заголовок:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Після першого візиту браузер кешує цю директиву на 365 днів. Усі наступні запити до домену та його поддоменів автоматично переводяться на HTTPS ще до відправлення в мережу — без редиректа 301, без round-trip на сервер.
Налаштування на Nginx
server {
listen 443 ssl http2;
server_name example.ua www.example.ua;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
# Решта конфігурації...
}
Параметр always критичний — без нього заголовок не відправляється при помилкових відповідях (4xx, 5xx).
Налаштування на Apache
<VirtualHost *:443>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
</VirtualHost>
Модуль mod_headers має бути включений: a2enmod headers.
Пошагове введення
Різка активація HSTS з max-age=31536000 на продакшен-сайті — ризик. Якщо потім виявиться, що SSL-сертифікат не покриває якийсь поддомен, користувачі не зможуть попасти на нього місяц і більше.
Рекомендуваний порядок:
- Переконатися, що всі поддомени працюють по HTTPS
- Налаштувати автоматичне оновлення сертифікатів (Let's Encrypt + Certbot або аналог)
- Встановити
max-age=300(5 хвилин), перевірити тиждень - Збільшити до
max-age=2592000(30 днів) - Встановити
max-age=31536000; includeSubDomains - Подати заявку на включення в HSTS Preload List
HSTS Preload List
Заявка подається на hstspreload.org. Після включення в список браузери Chrome, Firefox, Safari знають про ваше HSTS-вимогу ще до першого візиту користувача. Убрати домен зі списку — процедура довгого (кілька місяців), тому включають тільки домени з міцною HTTPS-інфраструктурою.
Вимоги для preload:
-
max-ageне менше 31536000 - Директива
includeSubDomains - Директива
preload - Усі поддомени мають підтримувати HTTPS
Строк реалізації
Базова настройка заголовка — 1–2 години включаючи тестування. Повний цикл до preload-статусу — 2–4 тижні з урахуванням поетапного наращивання max-age.







