如何正确设置HPKP header (Public-Key-Pinning Header)?

How to properly set HPKP header (Public-Key-Pinning Header)?

我对 header Public-Key-Pinning 感到非常困惑。你如何在 Apache 中添加它?

我做了什么:
分别从我的域证书、中间证书和根证书中获取 public 密钥哈希并将其添加到 apache,mod_headers 已启用。但是 ssllabs 说 "No Chain. Check Backup Pins"

Header always set Public-Key-Pins "pin-sha256=\"Root-SSL-Public-Key\"; pin-sha256=\"Intermediate-SSL-Public-Key\"; pin-sha256=\"Domain-SSL-Public-Key\"; max-age=2592000; includeSubDomains"

HPKP 是个坏主意。使用它很容易使您的网站变砖,而且鉴于此,它提供的保护相当小。

Almost all browsers have dropped support for HPKP因为这个。

规范中包含的用于减轻网站破坏的内容之一就是您 must have at least one pin that is NOT in your current cert and chain。也就是说,您必须有两个完全独立的引脚 - 一个来自备份 key/cert/CA,因此如果您失去对主要引脚的控制,您仍然可以连接。如果您只固定了您的证书、中间证书和根证书,那么它们都来自同一个链,因此不符合此要求。

解决这个问题,它应该被 SSLLabs 接受。但老实说,为什么要考虑浏览器支持和风险与回报的关系?