HSTS не работает с Chrome
Я настроил Apache для возврата заголовка HSTS. При подключении к https://lab20.example.com/ из Google Chrome и работе с инструментами разработчика я вижу следующий заголовок ответа: Strict-Transport-Security:max-age=63072000; includeSubdomains;
Но это не работает. Когда я пытаюсь получить доступ к http://lab20.example.com/, Chrome позволяет это.
Также при запуске из хрома: chrome://net-internals/#hsts Query domain "lab20.example.com"
Я получаю "Ответ не найден".
Кто-нибудь может объяснить, почему это происходит?
4 ответа
Для тех, кто видит подобную проблему - это может быть потому, что ваш браузер еще не получил доступ к сайту через HTTPS. Попробуйте получить доступ к нему через HTTPS, а затем снова через HTTP. Если HSTS правильно реализован, последний запрос должен завершиться неудачно. MDN объясняет это красиво:
Примечание:
Strict-Transport-Security
заголовок игнорируется браузером, когда ваш сайт доступен с помощьюHTTP
; это потому, что злоумышленник может перехватитьHTTP
соединения и вставьте заголовок или удалите его. Когда ваш сайт доступен черезHTTPS
без ошибок сертификата браузер знает, что ваш сайтHTTPS
способен и будет чтитьStrict-Transport-Security
заголовок.
Hsts не работает в домене с недействительным сертификатом.
Звучит разумно, поскольку нет смысла принудительно использовать https с недействительным сертификатом.
Вы настроили конфигурацию своего сайта так, чтобы Apache включал SSL для всех поддоменов, а не только для example.com и www.example.com?
Также я считаю, что chrome://net-internals/#hsts показывает только правильные запросы с сайтов, которые предварительно загружены и добавлены через https://hstspreload.appspot.com/. Это объясняет, почему chrome://net-internals/#hsts не работает для вас.
Это может быть связано с тем, что на вашем компьютере включена или отключена поддержка SSL. Если вы не можете отключить NO-SSL, то ваш компьютер может не поддерживать отключение NO-SSL.