Загрузка...
Загрузка...
Нашли баг, сбой или ошибку в работе reChecker? Есть предложение по улучшению? Напишите нам, чтобы мы проверили и исправили проблему в сервисе.
Пошаговая настройка HSTS для принудительного HTTPS. max-age, includeSubDomains, preload. Nginx, Apache, Cloudflare. Проверка и отладка.
Быстрые определения и связанные понятия из SEO-глоссария reChecker.
SSL-сертификат — цифровой документ, обеспечивающий шифрование соединения между браузером и сервером. Без него браузер показывает «Не защищено».
Читать в глоссарии →HSTS (HTTP Strict Transport Security) — заголовок безопасности, принудительно переключающий браузер на HTTPS. Защищает от атак перехвата трафика.
Читать в глоссарии →CDN (Content Delivery Network) — сеть серверов по всему миру для быстрой доставки контента пользователям. Снижает TTFB и ускоряет загрузку статики.
Читать в глоссарии →Preload — директива загрузки ресурсов до их обнаружения парсером. Ускоряет LCP, загрузку шрифтов и критических скриптов. Используется через link rel=preload.
Читать в глоссарии →Пошаговое руководство по установке бесплатных SSL-сертификатов Let's Encrypt на Apache и Nginx. Certbot, автообновление, wildcard. Практический гайд для веб-мастеров.
БезопасностьГлубокое руководство по настройке HTTP-заголовков безопасности. Content-Security-Policy, HSTS, X-Frame-Options и другие механизмы защиты от атак на веб-приложения.
УтилитыПросмотр PEM файлов онлайн: сертификаты X.509, приватные ключи, CSR. Форматы PEM и DER. Анализ без отправки на сервер.
БезопасностьПолное руководство по настройке Brotli сжатия на веб-серверах: Nginx, Apache, сравнение с Gzip, уровни сжатия и проверка работы.
Поделитесь с коллегами или изучите другие материалы блога
HTTP Strict Transport Security (HSTS) — механизм, который указывает браузеру всегда использовать HTTPS при обращении к вашему домену. Без HSTS первый запрос пользователя (например, при вводе example.com без https://) идёт по HTTP и уязвим для атак «человек посередине». HSTS устраняет это окно уязвимости.
Сценарий атаки:
example.com в адресной строке.С HSTS браузер «помнит», что домен требует HTTPS, и преобразует HTTP-запросы в HTTPS ещё до отправки. Первый визит по-прежнему уязвим, но все последующие — защищены.
Проверить настройку HSTS и SSL можно с помощью анализатора заголовков безопасности и SSL Checker на rechecker.ru.
Strict-Transport-Security: max-age=<seconds>; includeSubDomains; preload
| Параметр | Описание |
|---|---|
max-age | Время в секундах, сколько браузер помнит политику. Рекомендуется 31536000 (1 год) |
includeSubDomains | Распространить политику на все поддомены |
preload | Подсказка для включения в HSTS preload list браузеров |
Если включить HSTS при нерабочем HTTPS, пользователи не смогут обойти блокировку браузера. Отзыв из preload-списка занимает месяцы.
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
Параметр always нужен, чтобы заголовок отдавался и при кодах 4xx/5xx.
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Требуется модуль mod_headers:
LoadModule headers_module modules/mod_headers.so
app.use((req, res, next) => {
if (req.secure) {
res.setHeader(
'Strict-Transport-Security',
'max-age=31536000; includeSubDomains; preload'
);
}
next();
});
При использовании reverse proxy (Nginx перед Node) проверяйте заголовок X-Forwarded-Proto:
const isSecure = req.secure || req.get('X-Forwarded-Proto') === 'https';
if (isSecure) {
res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload');
}
В панели Cloudflare: SSL/TLS → Edge Certificates → включить «HSTS» и задать max-age. Preload включается отдельной опцией.
Preload — список доменов, встроенный в браузеры. Для них HTTPS обязателен с первого визита, без единого HTTP-запроса.
Шаги:
max-age не менее 31536000 и includeSubDomains.preload в заголовок.Важно: отзыв из preload занимает несколько месяцев. Убедитесь, что HTTPS будет работать стабильно.
curl -I https://example.com
Ожидаемый заголовок:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Онлайн-проверка: Security Headers — покажет все заголовки безопасности, включая HSTS.
Включайте includeSubDomains, только если все поддомены (www, api, cdn, admin и т.д.) обслуживаются по HTTPS. Иначе пользователи не смогут открыть поддомен по HTTP.
Проверьте поддомены:
curl -I https://www.example.com
curl -I https://api.example.com
HSTS дополняет, но не заменяет:
Для большинства сайтов:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Убедитесь, что все поддомены поддерживают HTTPS, затем добавьте домен в preload на hstspreload.org.