HSTS убрали, а браузер требует HTTPS: где осталась политика
Удаление HSTS-заголовка не отменяет уже полученную браузером политику: она сохраняется до предусмотренного истечения. Требование HTTPS также может прийти от родительского имени с includeSubDomains или preload. Сначала восстановите рабочий HTTPS и установите источник правила, а не просите посетителей отключать защиту.
Текущий ответ и сохранённое знание браузера
В справке MDN по Strict-Transport-Security описано сохранение правила после безопасного ответа. При следующем обращении браузер может применить это знание ещё до обычного HTTP-перехода. Поэтому отсутствие заголовка в новом ответе не доказывает отсутствие действующей политики.
Это отличается от серверной переадресации. Один лишь переход на HTTPS не устанавливает его причину: нужно понять, какое действие выполнил браузер и какой ответ действительно получен. Иначе исправление 301 на сервере может не затронуть сохранённое требование клиента.
Карта возможных источников
Таблица — учебная схема для владельца сервиса, а не сведения о политике домена пользователя. Разные источники могут действовать одновременно; проверка только одного заголовка на одном адресе оставляет остальные вопросы открытыми.
| Источник требования | Где действует состояние | Что проверяет владелец | Как клиент получает изменение | Что не решает удаление одного заголовка |
|---|---|---|---|---|
| Полученная политика имени | Сохранённые данные конкретного клиента | Действующий срок и ответы нужного имени | После предусмотренного безопасного получения или истечения | Прежнее знание браузера |
| Родитель с includeSubDomains | Правило, охватывающее дочерние имена | Политику соответствующего родителя | По условиям изменения родительского правила | Наследуемое требование у поддомена |
| Собственное правило поддомена | Состояние для отдельного имени | Историю его безопасных ответов | По правилам этого имени | Все другие сохранённые записи |
| Preload | Данные, доставленные браузеру вне обычного первого ответа сайта | Наличие применимого предзагруженного правила | Через процедуру и обновления соответствующего клиента | Встроенный список уже установленной версии браузера |
Почему ожидание от даты включения может быть неверным
MDN поясняет, что каждый полученный HSTS-заголовок обновляет срок, прибавляя max-age к моменту получения. Постоянное значение не означает, что правило обязательно закончится через такой интервал от первого включения. Новые ответы могут снова отодвигать истечение.
Для разбирательства сохраните наблюдаемые ответы и условия клиента. Не восстанавливайте дату последнего получения по памяти о дне настройки сервера. Владелец знает момент публикации изменения, но не обязательно момент, когда каждый посетитель его получил.
Что означает max-age=0
RFC 6797 определяет нулевое значение как сигнал удалить сохранённую политику соответствующего HSTS-имени. Важна доставка такого сигнала по безопасному соединению. Отправка того же заголовка через незащищённый HTTP не является способом надёжно отменить правило.
Нельзя приравнивать изменение одной записи к исчезновению всех причин требования HTTPS. Родительская область и собственные правила других имён требуют своего рассмотрения. Сначала составьте карту источников, затем выбирайте согласованное изменение, если оно действительно необходимо.
При неисправном сертификате первоочередная задача — восстановить корректный HTTPS. Не предлагайте посетителю обход ошибки сертификата ради получения команды отмены. Это не восстанавливает безопасный путь сервиса и не является общей процедурой для всех клиентов.
Родитель и поддомены
IncludeSubDomains распространяет правило на дочерние имена в указанной области. Поэтому отсутствие заголовка у отдельного поддомена не подтверждает, что на него ничего не действует. При смене архитектуры нужно учитывать не только публичную главную, но и используемые дочерние сервисы.
У каждого имени может быть своя история безопасных ответов. Не считайте, что изменение одного родителя автоматически очистило все отдельные записи, которые клиент получил раньше. Область и последовательность изменения должны быть частью плана, а не предположением после одного успешного теста.
Почему preload не откатывается мгновенно
На официальном сайте HSTS preload предупреждают, что удаление может добираться до пользователей Chrome месяцами, а одинаковый результат других браузеров не гарантируется. Это не процедура мгновенного сброса уже установленных клиентов.
Не путайте запрос на изменение списка, его обработку и получение обновлённых данных конкретной версией браузера. Для проекта важно всё это время поддерживать рабочее безопасное соединение. В статье не отправлялись формы включения или удаления preload и не менялись настройки доменов.
Как сравнивать старое и новое состояние клиента
В согласованной тестовой среде можно сравнить профиль с известной историей и подготовленный новый профиль. Разница помогает уточнить гипотезу о сохранённой политике, но не является доказательством, что preload отсутствует: он может уже входить в сам клиент.
Также исключите другие предусмотренные механизмы перехода на HTTPS. Не переносите одну успешную проверку на всех посетителей и не предлагайте им массово чистить профили. Владелец должен исправить доступность сервиса и управляемую публикацию политики на своей стороне.
План приёмки изменения
- Восстановите корректный HTTPS для затронутых имён.
- Зафиксируйте текущие ответы и отделите серверную переадресацию от поведения клиента.
- Составьте карту собственного HSTS, родительского includeSubDomains и preload.
- Согласуйте изменение нужной области и способ безопасного получения клиентом.
- Проверьте подготовленные клиентские сценарии без обхода сертификатных ошибок.
- Наблюдайте получение изменений, отдельно учитывая доставку preload и обновления браузеров.
Для защиты сайта передайте карту имён и источников требования. В задаче поддержки сервера нужны фактические безопасные ответы и состояние TLS. При доработке определите, какая часть публикации политики меняется и как проверяется результат.
Приёмка должна отвечать на вопрос, откуда клиент получает требование и как сервис остаётся доступным безопасно. Исчезновение заголовка в одном просмотренном ответе этого ещё не доказывает.
Вопросы и ответы
Почему браузер требует HTTPS после удаления HSTS?
Он мог сохранить прежнюю политику, получить её от родителя или использовать preload. Отсутствие заголовка в текущем ответе не отменяет автоматически каждое из этих состояний.
Когда действует HSTS max-age=0?
После предусмотренного получения по безопасному соединению оно сообщает об отмене политики соответствующего имени. При этом нужно отдельно проверить другие источники требования, включая родителя и preload.
Может ли includeSubDomains влиять на поддомен без собственного заголовка?
Да, правило родителя может охватывать дочернее имя. Поэтому проверка только ответа поддомена не определяет всю применимую область HSTS.