如何为子域永久禁用 Chrome HSTS

How to disable Chrome HSTS permanently for a subdomain

我有以下设置:

应用https://app.domain.de是我们的生产环境,自动转发使用HTTPS。这里一切正常。最重要的是,我们的 QA 团队可以通过 http://develop.app.domain.de(此处不需要 HTTPS)访问该应用程序的多个开发版本。

问题从这里开始:只要我访问 https://app.domain.de Chrome(我想还有其他浏览器),也将 http://develop.app.domain.de(无 HTTPS)转发到 https://develop.app.domain.de (HTTPS)。我当然可以禁用 HSTS 并清除该域的缓存,然后 http://develop.app.domain.de 将起作用,但只能在我再次访问 https://app.domain.de 之前。

我无法为我们的开发环境启用 HTTPS,因为您至少需要在 Heroku 中有一个 Hobby Plan 才能这样做,因此这对于我们所有的应用程序开发和测试环境来说都是浪费金钱。我还想保留 url 架构。

所以我的问题是如何永久禁用这种讨厌的转发 (HSTS)?

在主域上,您可以删除 HSTS header 的 includesubdomains 选项,因此它不会重定向子域。

但是,这不是最安全的解决方案。为了有效,最好在所有域和子域上设置 HSTS+includesubdomains(否则攻击者会伪造域“http://secure.yourdomain.com”例如)。

因此,最安全的解决方案是为您的开发域使用 self-signed 证书(或真实证书),然后在您的浏览器中导入它。

HSTS 不是 "nasty" - 它是一种安全功能。还有一个是您的域自愿选择激活的!

您可以从生产中删除 includeSubDomains 选项,这样它就只应用于顶级域而不是子域,前提是您没有提交它以预加载到网络浏览器中(请告诉我您没有完全理解就没有预加载它这意味着什么!- 您可以通过 运行 您的主域通过 SSL Labs testing tool).

检查这一点

但是,世界各地都在转向 HTTPS,您的开发环境并不能反映生产环境。某些功能(HTTP/2、地理定位...等)仅在使用 HTTPS 和 this list is growing 时有效。此外,根据您开发和引用资源的方式,您可能会在部署到生产环境后开始看到混合内容警告或缺失内容。所以在我看来,您 DO 在 development/QA 环境中需要 HTTPS。虽然我不知道你的平台,但你最好弄清楚如何在你的开发环境中设置 HTTPS,而不是尝试解决这个问题。可以免费创建自签名证书并使其在您的测试环境中受到信任,因此对于 select 数量的用户来说,它们与真实证书没有区别。

您可以在 Google Chrome 警告页面上的任意位置键入 thisisunsafe,它会在没有警告的情况下加载它。别开玩笑了。