服务器使用 HPKP(HTTP 公钥固定)来告诉客户端的 Web 浏览器(将来)要信任哪些证书,用于正在联系的域。
Google 的 Chrome 和 Mozilla 的 FireFox 提供了他们自己的固定到某些证书的网站列表。(谷歌将此列表中的条目称为“pinset”。)
如何将其他域的证书固定添加到我的 Web 浏览器(例如 FireFox)?
在 Web 浏览器中查看证书的详细信息时,是否有没有“将此证书固定到此 URI”选项的原因?它会破坏 CA 的概念,还是只是没有实施?
服务器使用 HPKP(HTTP 公钥固定)来告诉客户端的 Web 浏览器(将来)要信任哪些证书,用于正在联系的域。
Google 的 Chrome 和 Mozilla 的 FireFox 提供了他们自己的固定到某些证书的网站列表。(谷歌将此列表中的条目称为“pinset”。)
如何将其他域的证书固定添加到我的 Web 浏览器(例如 FireFox)?
在 Web 浏览器中查看证书的详细信息时,是否有没有“将此证书固定到此 URI”选项的原因?它会破坏 CA 的概念,还是只是没有实施?
您可以在 Google Chrome 中使用 chrome://net-internals/#hsts 执行此操作:
在该屏幕中,您可以查询网站的固定状态(HSTS、HPKP 和预加载),但您也可以为任何域添加证书固定:
在添加域部分,您可以为任何域指定:
在 Web 浏览器中查看证书的详细信息时,是否有没有“将此证书固定到此 URI”选项的原因?它会破坏 CA 的概念,还是只是没有实施?
是的,有一个原因使用户难以固定证书:如果网站管理员需要更新他的证书,那么他没有办法通知用户。浏览器会告诉您密钥无效,但您无法确定它是否合法。
为此,您必须导出证书,然后执行:
openssl x509 -in certificate.crt -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64
(将“certificate.crt”替换为之前保存的文件名)
你会得到类似的东西: YpcIku2YvZ9Q6rgTn8juPpBlEdzH7YFm9ZOLPImwwJk=
然后用 sha256/YpcIku2YvZ9Q6rgTn8juPpBlEdzH7YFm9ZOLPImwwJk= 填写“公钥指纹”字段
(注意开头添加的 sha256/)
但是,如果您想为多个网站执行此操作,我强烈建议您使用像@WhiteWinterWolf 建议的那样为 Firefox 的 Certificate Patrol ( https://addons.mozilla.org/fr/firefox/addon/certificate-patrol/ ) 的插件.
HPKP 没有解决这个需求。
HPKP是 HTTP 协议的扩展,允许网站管理员向浏览器提供特定的 pining 信息,从而允许:
如果 HPKP 设置不当,浏览器将拒绝对网站的任何访问,而无需用户直接追索。以上所有细节主要由服务器管理员知道和控制,而不是最终用户,因此最终用户无法在其浏览器中正确配置 HPKP pin。
相反,您可能会寻找浏览器存储有关非 HPKP 网站提供的证书的一些信息,并能够在证书更改时提醒您,直到用户检查新证书并同意继续,如果一切似乎都井井有条。这样的功能至少在 Firefox 上已经存在,但由诸如Certificate Patrol之类的插件处理。
如何将其他域的证书固定添加到我的 Web 浏览器(例如 FireFox)?
我认为它在 Firefox 中没有 GUI。对于 Chrome,请参阅 Tom 的回答。
在 Web 浏览器中查看证书的详细信息时,是否有没有“将此证书固定到此 URI”选项的原因?
是的。当需要进行密钥翻转时,这是支持地狱。
它会破坏 CA 的概念,还是只是没有实施?
两个都。这是故意的。往上看。