我可以使用交叉签名来促进HPKP管理吗?

我可以使用交叉签名来促进HPKP管理吗?

网络服务器中的 HPKP 的工作原理是向包含各种公钥哈希值的回复添加标头,使得至少有一个哈希值是有效的= 当前服务器证书的证书链中的一个证书,并且至少有一个无效的= 未出现在链中并被视为备份证书。有几种策略可用于选择代表有效条目的证书:

  • 您最喜欢的 CA 的根证书
  • 您最喜欢的 CA 的中级证书
  • 你的叶子证书

第一种选择是有问题的,因为它留下了相当大的攻击面(即,有人可能会欺骗或强迫该 CA 为您的主机签署恶意证书)。第二种选择受此影响较小,但更重要的是,当您续订时,中间证书可能会突然发生变化,从而导致您的网站瘫痪(除非您使用备份 CSR 进行续订)。第三种选择最为具体,但要求您更改 HPKP 标头,遵循非常具体的时间安排,并提前一个月或您在 HPKP 标头中使用的任何超时时间进行规划。

我想知道与个人(不受信任的)CA 进行交叉签名是否有帮助,即:以下场景是否可行?

我获得了证书AAA来自广为人知和信任的 CAXXX,使用中间签署AAA。此外,我交叉签署我的AAA我使用一个不知名、完全不可信、从未听说过的 CA 进行证书颁发雙方。现在我将我的网络服务器配置为使用AAA,SSS,ZZZ, 在哪里南海是用于灾难情况的安全存储的备份 CSR。

续订后,我对新证书也做了同样的事情血脑屏障即,我已让受信任的 CA 对其进行签名(可能是其他 CA,比如二十二和中间体YY2)并签名雙方;我将 HPKP 标头调整为BBB、SSS、ZZZ(实际上,HPKP 头可能留在SS,ZZZ从一开始就永远不会改变)

为什么我认为这应该有效?假设一位访客在从AAA血脑屏障。由于我的服务器配置为使用血脑屏障和中级证书YY2雙方。客户对此表示满意,因为至少YY2由签署二十二并且这是客户端的知名 CA 之一。接下来,它会检查 HPKP 标头。这要么是最新的,要么包含BBB、ZZZ、SSS也可以。或者旧版本AAA,ZZZ,SSS被重复使用,这也是可以的,因为雙方

问题:上述方法可行吗?所有支持 HPKP 的浏览器都可以使用它吗?或者这甚至是规范明确禁止的?

附加问题:我实际上该如何执行上述计划(就openssl命令和apache配置而言)?

答案1

不,它不会起作用。

浏览器不知道证书 ZZZ - 除非您打算将其以及官方中间证书 XXX 和/或 XX2 一起返回?即使您这样做了,浏览器也会完全忽略它,因为它不受信任,而是仅使用受信任的根构建路径。

HPKP 添加到浏览器的可信根存储之上 - 它不会取代它。

相关内容