关于 HTTP Public-Key-Pinning (HPKP) 的问题

Questions regarding HTTP Public-Key-Pinning (HPKP)

1.问题:
HTTP Public-Key-Pinning (HPKP) 真的 提高了安全性吗?
MITM(例如 NSA)可以拦截对服务器的第一个请求并使用 "faked" 证书进行响应,该证书由 compromised CA 签名。
因此 HPKP 仅在与服务器的初始连接未被篡改并且您 100% 确定您最初连接到正确服务器的情况下提高安全性。
正确的?

2。问题
Public-Key-Pins header 需要包含两个不同证书的至少两个哈希值,其中一个用作 "backup" 证书。
这是否意味着我必须从两个不同的 CA 购买两个不同的证书?
那将是相当昂贵的。如果您购买一个 CA,难道不应该为您提供为同一个域签署两个证书吗?
不应该以安全为代价,每个人 都应该能够构建安全 服务。

1.

2.HPKP与证书本身无关。顾名思义,它是关于 public 键的。

要获得证书,您将使用您的私钥创建证书请求。 您的 public 密钥存储在您从 CA 获得的证书中。然后将该 public 键与浏览器在固定 header.

中通过先前请求获得的键进行比较

根据您的回复,您将提供该私钥的 public 密钥和另一个私人备份密钥的 public 密钥。

关于第二个问题的评论。

实际上是的,您必须至少购买 2 个证书才能将证书指纹固定到客户端浏览器中。备份证书不得存储在生产计算机上。您只需要它的指纹。

指纹是根据证书计算的。然后一个 CA 也有一个指纹。

openssl x509 -noout -in /etc/ssl/certs/DigiCert_Global_Root_CA.pem -fingerprint -sha256