Вопрос: 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" Я получаю «Ответ не найден».

Может ли кто-нибудь объяснить, почему это происходит?


2
2017-08-01 06:59


Источник


Включить hsts на сервере - mussdroid


Ответы:


Для других, которые видят подобную проблему, возможно, потому, что ваш браузер еще не получил доступ к сайту через HTTPS. Попробуйте обратиться к нему через HTTPS, а затем снова через HTTP. Если HSTS правильно реализована, то последний запрос должен завершиться неудачно. MDN объясняет это красиво:

Заметка:  Strict-Transport-Security заголовок игнорируются в браузере   при доступе к вашему сайту, используя HTTP; это происходит потому, что злоумышленник может   перехват HTTP подключений и вставлять заголовок или удалять его. когда   доступ к вашему сайту HTTPS без ошибок сертификата,   браузер знает, что ваш сайт HTTPS способных и    Strict-Transport-Security заголовок.


6
2017-07-28 20:41



Есть ли причина для голосования? Должен ли это быть комментарием, а не ответом или чем-то еще? - sfarbota
Я не понимаю ниспровержения. У меня также была такая же проблема, и для меня не было очевидно, что она не работает http: если я не прочитаю ваш ответ. - ernesto che


Вы настроили конфигурацию своего сайта так, чтобы Apache принудительно выполнял SSL на всех поддоменах, а не только на example.com и www.example.com?

Также я считаю, что chrome: // net-internals / # hsts показывает только корректные запросы с сайтов, которые предварительно загружаются и добавляются через https://hstspreload.appspot.com/ , Это объясняет, почему chrome: // net-internals / # hsts не работает для вас.


0
2017-08-01 07:11



У меня есть только один домен: lab20.example.com с virtualhost для порта 80 и еще один виртуальный хост для порта 443 с включенным HSTS. И да - как вы можете видеть в заголовке «includeSubdomains»; (мой веб-браузер получает правильный заголовок в ответе при запросе lab2.example.com через https). Так почему это не работает, протестировано с Chrome 47 и 52 (47 может не работать в соответствии с caniuse.com/#feat=stricttransportsecurity) - user2913139
Хм, я не уверен. Я бы добавил, что все запросы на lab20.example.com:80 перенаправляются на lab20.example.com:443 (wiki.apache.org/httpd/RedirectSSL). Кроме того, если вам нужен только HSTS для конкретного субдомена, вы можете попытаться удалить includeSubdomains и просто поместить заголовок HSTS на подобъект. Другое дело, это может быть глупо, но я бы установил includeSubDomains вместо includeSubdomains. - isdf
Хорошо, я исправил его. Проблема заключалась в том, что у меня не было CA в хромовом магазине. Добавлено исключение вручную. Похоже, что для такого сценария хром не соблюдает заголовки HSTS. После добавления CA в доверенный магазин все работает нормально - я также вижу свой домен в chrome: // net-internals / # hsts. Благодаря ! - user2913139


Возможно, это связано с тем, что на вашем ПК включен NO-SSL или принудительный. Если вы не можете отключить NO-SSL, ваш компьютер может не поддерживать отключение NO-SSL.


0
2018-01-30 01:56