HSTS 无法与 Chrome 兼容

HSTS 无法与 Chrome 兼容

我已将 Apache 配置为返回 HSTS 标头。连接到https://lab20.example.com从 Google Chrome 并使用开发人员工具运行我可以看到以下响应标头:Strict-Transport-Security:max-age=63072000; includeSubdomains;

但它不起作用。当我尝试访问http://lab20.example.com,Chrome 允许这样做。

另外,从 chrome 运行时:chrome://net-internals/#hsts Query domain "lab20.example.com"我收到“未找到响应”。

有人能解释为什么会发生这种情况吗?

答案1

对于遇到类似问题的其他用户,这可能是因为您的浏览器尚未通过 HTTPS 访问该网站。请尝试通过 HTTPS 访问该网站,然后再通过 HTTP 访问。如果 HSTS 正确实施,则最后一个请求应该会失败。MDN 对此进行了很好的解释

笔记:标题Strict-Transport-Security被忽略当使用 访问您的网站时,浏览器会识别出该标头HTTP;这是因为攻击者可能会拦截HTTP连接并注入标头或将其删除。当通过 访问您的网站时,HTTPS如果未出现证书错误,则浏览器知道您的网站HTTPS具备该功能,并将遵守 Strict-Transport-Security标头。

答案2

Hsts 不适用于具有无效证书的域。

听起来很合理,因为使用无效的证书强制 https 是没有意义的。

答案3

您是否配置了站点配置,以便 Apache 强制所有子域使用 SSL,而不仅仅是 example.com 和 www.example.com?

此外,我相信 chrome://net-internals/#hsts 仅显示通过以下方式预加载和添加的网站的正确查询https://hstspreload.appspot.com/。这解释了为什么 chrome://net-internals/#hsts 对您不起作用。

答案4

这可能是因为您的 PC 启用或强制了 NO-SSL。如果您无法禁用 NO-SSL,则您的 PC 可能不支持禁用 NO-SSL。

相关内容