Механизм HSTS
HSTS (HTTP Strict Transport Security) — механизм, принудительно активирующий защищённое соединение через протокол HTTPS.
Содержание
1 Общая информация
- HSTS защищает от даунгрейд-атак на TLS.
- Указывает броузеру всегда использовать TLS для сайтов с соответствующими политиками.
- Стандарт описан в RFC 6797.
2 Механизм работы
- Сервер сообщает о политиках HSTS с помощью специального заголовка при подключении по протоколу https.
- При подключении по /http заголовок HSTS игнорируется.
- Когда сайт применяет политику HSTS, пользовательские броузеры, корректно воспринимающие заголовок HSTS, должны:
- Автоматически автономно преобразовывать все http-ссылки на данный сайт в https-ссылки.
- Если безопасность соединения https не может быть проверена (в частности, если TLS-сертификат сервера не подписан доверенным ключом), будет показано сообщение об ошибке, и пользователь будет лишен доступа к сайту.
3 Типы политик
3.1 Динамические политики
- Политика применяется из HTTP-заголовка Strict-Transport-Security при первом заходе на сайт по HTTPS.
- В заголовке указан срок действия и применимость к субдоменам.
3.2 Статические политики
- Исходный вариант HSTS не защищает первое подключение пользователя к сайту. Злоумышленник может легко перехватить первое подключение, если оно происходит по протоколу http.
- Для борьбы с этой проблемой большинство современных броузеров использует дополнительный статический список сайтов (HSTS preload list), требующих использования протокола https.
- Список составляется авторами Google Chrome с 2010 года.
- На базе этого списка составляются подобные списки для других броузеров.
4 Проверка работы
- Можно проверить с помощью сайта: https://www.ssllabs.com/ssltest/index.html.
5 Поддержка на стороне сервера
5.1 Apache
5.1.1 Включение HSTS
За HSTS отвечает директива
Strict-Transport-Security
.Реализуется с помощью модуля
mod_headers
.Для блока
<VirtualHost *:443>
следует установить<VirtualHost *:443> ... Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" ... </VirtualHost>
max-age
: время, в течение которого броузер должен применять заголовок HSTS для этого сайта. Указан 1 год.includeSubDomains
: применять HSTS также для субдоменов.
6 Поддержка на стороне клиента
6.1 Chrome
6.1.1 Отключение HSTS
- Настройки находятся по адресу
chrome://net-internals/#hsts
. - В Query HSTS/PKP domain укажем наш домен и нажмём Query для информации по настройке сайта.
- В разделе Delete domain security policies указываем наш домен, нажимаем Delete.
- Перезапускаем броузер.