HSTS:点击证书错误

信息安全 hsts
2021-09-10 04:27:24

我们有一个带有 www.example.com 域证书的网站 www.example.com,我们还启用了 HSTS。Qualys SSL 实验室 ( https://www.ssllabs.com/index.html ) 确认已启用 HSTS。

我注意到,如果您访问https://test.example.com(由同一 Web 服务器提供服务),您会遇到证书错误,这是意料之中的,因为 test.example.com 没有证书加载到 Web 服务器上。但是,我注意到您可以单击证书错误,然后提供 Web 内容。

对我来说,这是出乎意料的行为。我认为 HSTS 背后的中心思想之一是你不能点击证书错误。来自维基百科:“如果无法确保连接的安全性(例如服务器的 TLS 证书不受信任),则显示错误消息并且不允许用户访问 Web 应用程序”。

这发生在 Firefox 59.0.2(32 位)和 Chrome(65.0.3325.146(64 位))上。

我的问题:为什么浏览器会允许用户点击启用 HSTS 的网站上的证书错误?

1个回答

您的浏览器未应用 HSTS 策略,test.example.com因为它在无错误安全传输之前没有看到标头。因此,它仍然允许您“添加例外”。

用户代理处理模型 [...] 规定主机最初被称为已知 HSTS 主机,或者只有当 UA 通过安全传输连接接收到 STS 标头字段时,才对已知 HSTS 主机的缓存信息进行更新没有潜在的安全传输错误或警告。

(来自 RFC 6796,强调我自己的)

通过纯 HTTP 或带有证书警告的标头不计算在内:

使用 HTTP 访问您的站点时,浏览器会忽略Strict-Transport-Security标头;这是因为攻击者可能会拦截 HTTP 连接并注入或删除标头。当您的站点通过 HTTPS 访问且没有证书错误时,浏览器就知道您的站点支持 HTTPS 并将遵守标头。Strict-Transport-Security

(来自 MDN)

另外,请注意,您的includeSubDomains指令 fromwww.example.com不适用,因为test.example.com它不是直接子域(不匹配*.www.example.com)。