Назад | Перейти на главную страницу

HSTS: Достаточно ли includeSubDomains в основном домене?

В моем Редакция Plesk для веб-администрирования Я только что активировал HSTS на своем основном домене www.domain.tld с участием

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

Тест на ssllabs.com говорит что все нормально работает. Проблема в моем поддомене (subdomain.domain.tld). Если я тестирую свой поддомен на ssllabs, он говорит, что HSTS не активирован.

Стоит ли включать заголовок

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

на моем поддомене или достаточно реализации на моем основном домене?

Я подумал, добавив includeSubDomains не было необходимости добавлять его явно на поддомены.

В includeSubDomains part только указывает браузеру, как только он это увидит, что запросы к другим субдоменам должны подчиняться тем же правилам HSTS (т.е. должен присутствовать действующий сертификат). Это не «делает вывод» о применении этого правила к вашим субдоменам, если, например, пользователь никогда раньше не заходил на ваш сайт www.domain.tld. В этом случае их браузер никогда не увидит наличие этого заголовка в вашем субдомене www и, следовательно, не будет применять правила HSTS.

Если пользователь имеет видел этот заголовок в вашем субдомене www, затем пытается получить доступ к субдомену с недействительным сертификатом, он блокирует его и не позволяет пользователю продолжить.

Короче говоря, вам нужно убедиться, что вы обслуживаете один и тот же заголовок HSTS для всех своих поддоменов, чтобы это было на 100% эффективным.

В отличие от CAA, HSTS не считывается из всех родительских доменов.

Итак, если вы установили его на example.com с помощью includeSubDomains тогда он не будет прочитан, если вы просто посетите www.example.com. Однако, если вы сначала посетите example.com, он будет установлен. Таким образом, вы могли получить противоречивые результаты.

Предположительно это связано с тем, что будет иметь место влияние на производительность (и конфиденциальность!) При проверке всех родительских доменов, чтобы узнать, отправляют ли они также заголовок HSTS с includesubdomains.

Поэтому его следует установить в используемом домене так же как любой родительский домен (ы).

Теперь даже этого часто недостаточно для полной защиты. Например, если вы отправили его на www.example.com и на example.com, но example.com обычно не посещается, тогда у большинства посетителей веб-сайта будет кэшироваться только вариант www как домен HSTS. Так что вполне может быть возможно посетить example.com через HTTP хотя бы для одного запроса. По этой причине рекомендуется загружать один актив (например, изображение) из вашего базового домена через HTTPS при посещении вашего домена www, чтобы загружались обе политики HSTS. Также рекомендуется перенаправить как example.com -> https://example.com -> https://www.example.com а не example.com прямо на https://www.example.com выбрать любую политику HSTS на сайте example.com, несмотря на влияние этого дополнительного перенаправления на производительность.

И на каждом уровне могут быть разные политики. Например, если у вас есть поддомены, которые не находятся на HTTPS (например, intranet.example.com), тогда вы можете иметь политику HSTS на верхнем уровне без includeSubDomains и другую политику HSTS на сайте www.example.com с includeSubDomains.

Альтернатива всему этому - предварительная загрузка домена. Это жестко кодирует весь домен (и обычно все поддомены) в коде браузера, поэтому даже первые посещения защищены. Это также не влияет на производительность проверки всех родительских доменов, поэтому делает вступают в силу только с одной записью с includeSubDomains. Но предварительная загрузка - это серьезное обязательство, и к нему нельзя относиться легкомысленно, поскольку это в основном необратимо. Кроме того, вы не можете выполнить предварительную загрузку, если все ваши субдомены не являются HTTPS - мы сделаем это, по крайней мере, без специальной предварительной загрузки. Еще одна причина загрузить изображение из домена верхнего уровня, чтобы подобрать базовую политику перед действует любая необратимая предварительная нагрузка!

В общем, это сложно! :-) Но стоит потрудиться, чтобы понять это и сделать все правильно.