从 HPKP 预加载列表中删除域

从 HPKP 预加载列表中删除域

所以,这是一个关于 HTTP 公钥固定(HPKP)和 HTTP 严格传输安全(HSTS)的有趣故事。

我正在尝试 HTST Always 和 HPKP 预加载选项,但没有完全意识到其后果。

大约在同一时间,我发现我用来“测试”如何全面保护用户的“测试”帐户并不安全。我删除了它,重新创建了它,有一次我忘记保护它了。

这是一个普通用户,几乎没有任何权限,我通过终止用户“test”拥有的进程来删除该用户。然后我rm -rfv /home/test/

但是,我仍然觉得不安全,因此我重新安装了服务器,认为我可以使用 Let's Encrypt 更新证书,再次添加它们,然后就完成了。

唉,事情并非如此。当我使用 Chrome 浏览我的网站 (*.eurobytes.nl) 时,我收到以下消息:

ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN

当浏览我的一个子域名时,Mozilla Firefox 甚至不会显示该网站,它只是没有进入那里。

我认为通过将自己从 Mozilla Firefox/Google Chrome HTST 和 HPKP 列表中除名就可以解决所有这些问题。

我该如何从 HTST 和 HPKP 中退市?

答案1

实际上你无法改变这一点。通常你无法访问网站访问者的浏览器。

HSTS——HTTP 严格传输安全

我假设您仅通过标头设置了 HSTS,而未通过列表设置(通过 HSTS 预加载将域名注册为仅 https)。如果是这种情况,则访问过您网站的所有浏览器都存储了您的域名,并在给定的 max-age 内优先使用 HTTPS。

如果您已通过以下方式将域名注册为仅支持 HTTPS 的网站(包括所有子域名)https://hstspreload.org/那么您必须先从此列表中删除您的域名(不建议删除 - 需要相当长的时间)。

HPKP——HTTP 公钥固定

同样如此:您所有的网站访问者都在他们的浏览器中存储了您域名允许的密码,如果您设置的新 SSL 证书与其中一个密码不匹配,则浏览器将无法打开您的网站。

我建议使用不同的域名。

答案2

好的,这里发生了一些事情。

首先,HSTS 表示您的网站必须在您之前指定的浏览器缓存的时间内使用 HTTPS。由于您安装了新证书,因此您仍在使用 HTTPS,这不是问题,也不是错误消息告诉您的问题。

HSTS 也可以预加载(硬编码)到浏览器代码中。但即使你这样做了,这也不是问题,因为你仍在使用 HTTPS。

HPKP 表示只有某些 HTTPS 证书可用于您的网站。由于您拥有一个不在之前定义的列表中的新证书,因此您的问题就出在这里。

值得庆幸的是,浏览器不允许您预加载 HPKP,因为我认为这是一个糟糕的想法。

那么如何解决?

  1. 从浏览器中删除它。在 Chrome 和 Opera 中,您可以chrome://net-internals/#hsts在 Web 浏览器中输入并搜索并删除 HSTS 和 HPKP 的域名。在 Firefox 上执行类似操作需要编辑文件(请参阅点击此处了解详情)。显然,这只有当您的网站只有少数人使用,并且您可以访问他们的电脑和/或通过这种方式与他们交谈时才有效。

  2. 您等待 HPKP 策略的到期时间结束。希望您测试的策略到期时间较短。Chrome 将 HPKP 策略的最长期限限制为 60 天(即使您指定了更长的策略)。

答案3

我想提醒后人——到 2021 年,您可以放心地弃用 HPKP。目前没有现代浏览器允许 HPKP。Chrome 在 2017 年放弃了它,我相信 Firefox 也在 2018 年放弃了它。因此,不必担心删除标头,您的客户端浏览器仍然可以访问您的网站。

完整的浏览器支持列表:https://caniuse.com/?search=hpkp 如果您担心内置的古老浏览器。

对于那些感兴趣的人,可以在这里详细了解为什么它被弃用。https://scotthelme.co.uk/hpkp-is-no-more/

相关内容