我最近发现:
chrome://net-internals/#hsts
我可以添加域名,从那时起,我只能通过 HTTPS 查看域名!这类似于 Firefox 的 HTTPSEverywhere 插件,但不需要任何插件!
我对此有两个疑问:
- 我如何导出/导入设置?(只能通过 HTTPS 访问的域名)
- 如果给定的域名具有无效证书,那么我如何才能通过 HTTPS 访问它?
答案1
第一部分(存储在哪里?)
以下是根据我的调查得出的部分答案:HSTS 信息以 JSON 格式存储在 中$PROFILE/TransportSecurity
,$PROFILE
Chrome 将此信息存储在您的系统上的任何地方。
(这是 Chromium 版本34.0.1847.116 (Developer Build 260972) Ubuntu 13.10
。)
chrome://net-internals/#hsts
该文件似乎缓存了您使用 HTTPS 访问过的每个站点的信息;您可以通过查找非空的 来轻松识别已启用特定公钥指纹的站点dynamic_spki_hashes
。
很遗憾,JSON 对象的键是完全不透明的(至少对我来说):它们是用 base64 编码的 32 字节二进制字符串。以下是示例:
"xxxx 32 byte base64 encoded string xxxx=": {
"dynamic_spki_hashes": [ "sha1/oMSnRgDtpy3AvsuajLYHyljudF4=" ],
"dynamic_spki_hashes_expiry": 1496120402.263232,
"expiry": 1441256424.39423,
"mode": "force-https",
"pkp_include_subdomains": true,
"pkp_observed": 1409720402.26327,
"static_spki_hashes": [ ],
"sts_include_subdomains": true,
"sts_observed": 1409720424.39423
},
我不知道如何保存这些 TransportSecurity 文件以将它们复制到另一台计算机或其他配置文件。我确实尝试过将整个 TransportSecurity 文件复制到新的配置文件目录;然而,当使用该配置文件启动 Chrome 时不是似乎识别 TransportSecurity 文件中的 HSTS 信息。
也许对 Chrome 内部结构有更深了解的人可以帮助我们了解如何不仅查看而且还传输这些信息。
第二部分(无效证书)
我认为 HSTS 的目的是让人们几乎不可能忽略浏览器的警告并访问具有无效证书的网站。
也就是说,如果您有某些特定的、非常好的理由接受 Chrome 不喜欢的证书,我希望您可以通过使用添加该证书的公钥指纹来覆盖它chrome://net-internals/#hsts
。