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

Apache 2.4 - отключить заголовок HSTS

Я установил Vagrant box с Ubuntu 18.04 и установил Apache 2.4.29. Я создал и включил новый файл conf, который выглядит так:

<VirtualHost *:80>
    ServerName django.dev
    ServerAlias www.django.dev
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

По какой-то причине apache отвечает заголовком HSTS, когда я пытаюсь вызвать django.dev:

Я понятия не имею, откуда это взялось. Нет такого набора заголовков ни в apache2.conf, ни в 000-default.conf, и у меня даже не включен mod_ssl.

Как ни странно, при прямом вызове IP все работает как положено. Если я пингую django.dev, он разрешается на тот же IP-адрес.

Кто-нибудь знает, как и где можно отключить HSTS? Я в растерянности и уже потратил впустую часы, пытаясь решить эту проблему.

Политика HSTS кэшируется браузером в течение секунд, указанных в max-age директива (RFC 6797, 6.1.1). Удаление заголовка из конфигурации веб-сервера не удаляет политику из кеша (или список предварительной загрузки, если он отправлен в один), и, следовательно, продолжает вызывать 307 Internal Redirects в каждом браузере, который уже кэшировал политику.

Как указано в RFC 6797, 5.3:

Только данный хост HSTS может обновить или вызвать удаление выпущенной им политики HSTS. Это достигается путем отправки Strict-Transport-Security Поля заголовка HTTP-ответа для UA с новыми значениями продолжительности времени политики и применимости поддомена. Таким образом, UA кэшируют «самую свежую» информацию о политике HSTS от имени хоста HSTS. Указание нулевой продолжительности времени сигнализирует UA удалить политику HSTS (включая любую заявленную директиву includeSubDomains) для этого хоста HSTS.

Следовательно, единственный способ удалить политику HSTS - установить заголовок HSTS с нулевой продолжительностью, и браузер также должен видеть этот заголовок при безопасном соединении без каких-либо ошибок или предупреждений TLS (2.2).

<VirtualHost *:443>
    . . .
    Header always set Strict-Transport-Security "max-age=0"
</VirtualHost>

Как ни странно, при прямом вызове IP все работает как положено.

Это совсем не странно. Как объяснено в Приложение,

  1. Узлы HSTS идентифицируются только через доменные имена - явная идентификация IP-адреса во всех формах исключена. Это сделано для упрощения, а также с учетом различных проблем, связанных с использованием прямой идентификации IP-адреса в сочетании с безопасностью на основе PKI.

Вы не можете отключить HSTS на .dev

Если это буквально .dev домен, вы не можете отключить HSTS.

Ваша безопасность - наш приоритет. Файл.dev домен верхнего уровня включен в список предварительной загрузки HSTS, поэтому HTTPS требуется для всех подключений к.dev веб-сайты и страницы без необходимости индивидуальной регистрации или настройки HSTS. Безопасность встроена.