如何验证HSTS是否由浏览器强制执行

时间:2018-02-21 14:01:42

标签: google-chrome internet-explorer firefox opera hsts

我在我的网站上设置了HSTS标题,我想测试不同的浏览器(chrome,Firefox,IE,Opera)强制执行标题。

我设置了一个受信任的证书,连接到该站点,我可以在HTTP响应中看到标题。但我想验证浏览器是否执行协议。

在Chrome中它很简单且有效: - 我可以在chrome:// net-internals / #hsts查询网站 - 尝试连接HTTP时,我获得状态为307的0kb响应。 - 如果我更改自签名证书,我无法连接该网站,并且没有继续选项。

其他浏览器行为不同,我无法查询HSTS列表,响应状态和大小不同,当更改为自签名证书时(在第一次信任连接之后),我确实有继续选项。

那么如何验证协议是否在每个浏览器上实施?

1 个答案:

答案 0 :(得分:1)

虽然Chrome查询HSTS缓存并查看虚假307重定向的功能非常方便,但您只需检查HSTS是否具有强制执行权。

HSTS为您提供两种选择:

  1. 通过HTTPS自动加载HTTP资源
  2. 防止点击证书错误。
  3. 您正专注于第二个选项,但为什么不使用第一个选项作为测试?只需使用HTTP加载站点并检查它是否被重定向(即加载HTTP URL,因此不使用HSTS规则),或者它是否只是立即加载HTTPS URL(即使用HSTS)。

    所以在Firefox中,例如开放式网络工具点击"坚持日志"选项(并且允许"禁用缓存"以避免任何混淆)。然后转到通过HTTP(例如http://stackoverflow.com)拥有HSTS标头的网站,如果这是您第一次访问,则会看到301重定向:

    enter image description here

    下次你去它(在它缓存了HSTS标题之后)它应该直接转到HTTPS URL,即使你在地址栏中输入了HTTP URL:

    enter image description here

    如果您已经访问过stackoverflow.com,则可以clear the HSTS cache再次尝试此操作。

    一旦您确认正在使用HSTS,您就可以调查点击问题。浏览器不应允许在HSTS到位时点击,包括自签名证书,但可能存在错误,或者它仍然在某些地方缓存了您的旧证书,或者HSTS政策已经过期或其他...