Public 键固定 (HPKP) 最长期限客户端行为

Public Key Pinning (HPKP) max-age client side behavior

我对 RFC7469(Public Key Pinning Extension)中 max-age 指令的用途没有清楚的理解

我对 RFC7469 和 HTTP Public Key Pinning 的理解是,每次客户端启动与服务器的 HTTPS 事务时,它应该计算服务器证书的 pin 并验证它是否与其中一个 pin 匹配服务器在之前的事务中返回。如果 pin 不匹配,则可能发生了中间人事件,必须拒绝连接。

我不清楚 "max-age" 指令的目的。这是 RFC7469 规定的内容:

"max-age" 指令指定在 接收 PKP 头字段,在此期间 UA 应该考虑 作为已知固定主机的主机(从其接收消息)。

这是否意味着客户端应该在 max-age 过期之前更新本地的 pin 副本?

Max-age 告诉客户端 HPKP header 的有效期。 max-age 到期后,HPKP header 应该被遗忘和忽略。但是,如果您在那段时间重新访问该站点,您可能会得到一个新的 max-age 并将 max-age 延长一点。

证书有有效期,因此让 HPKP header 无限期有效是没有意义的。也有可能通过更新证书意外阻止对您网站的访问。所以一个max-age是必要的。

HPKP 已被认为是危险的(参见 my blog post here for some of the reasons), so even with a max-age it’s proven to be too dangerous for most sites and Chrome for one are removing it as an option