Как проверить, что HSTS применяется браузером

Я установил заголовок HSTS на своем сайте и хочу проверить, что разные браузеры (chrome, Firefox, IE, Opera) применяют заголовок.

Я устанавливаю доверенный сертификат, подключаюсь к сайту и вижу заголовок в ответе HTTP. но я хочу убедиться, что браузер обеспечивает соблюдение протокола.

В Chrome это просто и работает: - Я могу запросить сайт по адресу chrome://net-internals/#hsts - При попытке подключения по HTTP я получаю ответ 0 КБ со статусом 307. - Если я верну обратно самозаверяющий сертификат, я не удается подключиться к сайту, и нет возможности продолжить.

Другие браузеры ведут себя по-разному, я не могу запросить список HSTS, статус и размер ответа отличаются, и при переходе на самозаверяющий сертификат (после первого доверенного подключения) у меня есть возможность продолжить.

Итак, как я могу проверить, что протокол применяется в каждом браузере?


person IdolAdmin    schedule 21.02.2018    source источник


Ответы (1)


Хотя возможность Chrome запрашивать кеш HSTS и видеть фальшивую переадресацию 307 удобна, вы можете просто проверить, применяется ли HSTS.

HSTS предлагает вам два варианта:

  1. Автоматически загружать ресурсы HTTP через HTTPS
  2. Предотвратить клики по ошибкам сертификата.

Вы концентрируетесь на втором варианте, но почему бы не использовать первый вариант в качестве теста? Просто загрузите сайт с HTTP и проверьте, перенаправляется ли он (т. е. загружает URL-адрес HTTP и поэтому не использует правило HSTS) или он просто сразу загружает URL-адрес HTTPS (т. е. использует HSTS).

Например, в Firefox откройте сетевые инструменты, нажмите «Сохранять журналы» (и давайте сделаем «Отключить кеш», чтобы избежать путаницы). Затем перейдите на сайт с заголовком HSTS через HTTP (например, http://stackoverflow.com), и вы увидите перенаправление 301, если это ваш первый визит:

введите здесь описание изображения

В следующий раз, когда вы перейдете к нему (после того, как он кэширует заголовок HSTS), он должен перейти непосредственно к URL-адресу HTTPS, даже если вы ввели URL-адрес HTTP в поле адреса bat:

введите здесь описание изображения

Если вы уже были на stackoverflow.com, вы можете очистить Кэш HSTS, чтобы повторить попытку.

После того, как вы подтвердите, используется HSTS или нет, вы можете исследовать проблему перехода по ссылкам. Браузеры не должны разрешать клики при наличии HSTS, в том числе для самоподписанных сертификатов, но, возможно, есть ошибка, или он все еще кэширует ваш старый сертификат в некоторых местах, или срок действия политики HSTS истек, или что-то другое...

person Barry Pollard    schedule 21.02.2018
comment
Я также просмотрел заголовки HTTP, проблема в том, как отличить, пришел ли статус ответа 301\302\307 с сервера или из браузера? в хроме размер заголовка составляет 0 КБ, в других браузерах это не то же самое. Я тестирую это с несколькими серверами и браузерами, и иногда я получаю различное поведение. теперь, после того, как я подключаюсь к доверенному сертификату и заменяю его самозаверяющим сертификатом или удаляю свой ЦС, который я добавил, я все еще могу перейти на сайт (с IE), время до того, как все было в порядке и заблокировало меня (да, я видел что изменение сертификата было распознано браузером) - person IdolAdmin; 22.02.2018
comment
301 и 302 приходят с сервера (хотя могут кэшироваться). 307 приходит из браузера. - person Barry Pollard; 22.02.2018