HSTS не работает с Chrome

2131
user2913139

Я настроил 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
Включить hsts на сервере mussdroid 7 лет назад 0

3 ответа на вопрос

6
sfarbota

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

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

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

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

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

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

Это может быть связано с тем, что на вашем компьютере включена или отключена поддержка SSL. Если вы не можете отключить NO-SSL, то ваш компьютер может не поддерживать отключение NO-SSL.

Похожие вопросы