浏览器将HTTP站点缓存为HTTPS,导致从站点导航到HTTPS目标时出现证书错误

时间:2018-03-24 14:10:15

标签: http https cache-control http-redirect

我有一个公司网站,其托管为https://foo.bar.com

但是,很多用户错误地传达了URL为www.foo.bar.com。在此可以纠正之前,我们正在通过设置代理网站www.foo.bar.com来实施临时解决方案,该网站将重定向到达https://foo.bar.com的所有用户。

这有效......但仅在用户第一次导航到该页面时才有效。下次我尝试访问www.foo.bar.com时,由于缓存,浏览器会将我带到https://www.foo.bar.com。我们没有为https://www.foo.bar.com设置证书,因此会出现NET :: ERR_CERT_COMMON_NAME_INVALID错误。

有没有办法在不需要证书的情况下解决这个问题?

为了测试,当我导航到www.foo.bar.com时,我甚至尝试返回一个网页,其链接导航到https://foo.bar.com。但是,即使在这种情况下也会出现同样的问题。我猜HSTS在这里发挥作用,但不知道如何去做。

我很感激对此事的任何见解,谢谢你。

1 个答案:

答案 0 :(得分:1)

我相信您问题的唯一解决方案是获取www.foo.bar.com的有效证书。由于证书错误,浏览器不会尝试与您的服务器通信,因此您无法从错误的域重定向到正确的域。

为什么只有第二次?

你提到HSTS所以我假设https://foo.bar.com正在发送Strict-Transport-Security标头作为其响应的一部分。此标头可能与 includeSubDomains 选项一起发送,该选项指示浏览器不仅在foo.bar.com上强制执行HTTPS,还强制执行该主域的所有子域。因此,当尝试请求www.foo.bar.com时,浏览器会匹配该HSTS规则并自动重新编写它以使用HTTPS。

一旦在浏览器中设置了此HSTS规则,除非通过超出原始最大使用期限或通过发出另一个 max-age = 0 on https://foo.bar.com