0

我的 Apache https 服务器已返回以下标头作为对https://lab20.example.com请求的响应:

公钥引脚:pin-sha256="klO23nT2ehFDXCfx3eHTDRESMz3asj1muO+4aIdjiuY="; pin-sha256="633lt352PKRXbOwf4xSEa1M517scpD3l5f79xMD9r9Q="; 最大年龄=2592000;包括子域

这些针脚无效 - 但谷歌浏览器 52 仍然允许连接到我的实验室。看起来 HPKP 不起作用。我还测试过:chrome://net-internals/#hsts - 在查询 lab20.example.com 之后,我确实看到了 HSTS(确认工作正常)但没有看到 HPKP - 我没有看到任何 dynamic_spki_hashes。为什么 ?

我是否需要激活 chrome 中的某些内容才能理解和处理 HPKP 标头?

谢谢,

4

2 回答 2

0

好的,找到原因了,我使用了我的企业 CA,但是:

当证书链链接到私有信任锚时,Chrome 不会执行 pin 验证。该策略的一个关键结果是私有信任锚可用于代理(或 MITM)连接,甚至是固定站点。“数据丢失防护”设备、防火墙、内容过滤器和恶意软件可以使用此功能来破坏密钥固定的保护。

于 2016-08-05T12:22:37.187 回答
0

仅当标题有效时才会被接受,然后用于将来的访问(在 max-age 时间内)。

这是在规范中指定的:

UA 必须记下主机的 Pin 当且仅当

……剪……

o TLS 连接已使用证书链进行身份验证,该证书链包含由至少一个给定 SPKI 指纹指示的至少一个 SPKI 结构(参见第 2.6 节)。

这是为了防止您不小心将您的网站变砖,并且是一个很棒的功能,可以减少意外执行不当的 HPKP 的危险。

然而,它确实使测试不良 HPKP 变得相当困难。使用您引用的内部页面手动添加标题,为您的页面获取两个不同的证书,或者在顶层设置一个有效的标题(包含子域)并为子域使用不同的证书进行测试。

于 2016-08-02T20:51:02.663 回答