为什么 CA 根证书都是 SHA-1 签名的(因为不推荐使用 SHA-1)?

131*_*131 69 ssl ssl-certificate certificate-authority

我知道不能再使用 SHA-1 对 SSL 证书进行签名。然而,所有 CA 根证书都是 SHA-1 签名的(大部分)。这是否意味着不再受“你奶奶 SSL 商店”信任的相同算法适用于世界上最顶级的安全证书?

我错过了什么吗?(密钥用法?密钥大小?)

use*_*709 109

根 CA 证书的签名根本无关紧要,因为不需要验证它们。它们都是自签名的。

如果您信任根 CA 证书,则无需验证其签名。如果你不信任它,它的签名对你来说毫无价值。

编辑:下面有一些非常相关的评论。我不喜欢复制或改写它们并为它们而不是它们的作者获得荣誉。但我欢迎人们为这个答案添加解释。

  • 因为系统不支持未签名的证书。 (42认同)
  • 我会比“无需验证它们”更进一步。证书链中签名的目的是由上级机构认证下级机构。对于根 CA,*根据定义**(这就是“根”的意思)没有更高的权限,因此*没有人可能签署证书*。如前所述,证书*必须*签名,因此根 CA 使用“虚拟”签名进行签名,而最简单的方法是自签名。因此,不仅不需要验证,验证根 CA 签名的*想法*也是毫无意义的。 (21认同)
  • @DewiMorgan 您不能通过哈希冲突“破解”根证书,因为客户端信任 _cert 本身_,而不是其(自)签名。您必须恢复私钥,这是对 RSA 的攻击,而不是对哈希算法的攻击。 (13认同)
  • 带来了为什么要签署的问题 (3认同)

Mar*_*son 46

归根结底,根证书是自签名的。除了自己之外,它永远不会由其他实体签署。根证书通过带外过程获得信任,例如将其提交到受信任发布者的浏览器列表,或使其被 Microsoft 接受以插入到 Windows 受信任发布者的默认列表中。

这些证书(以及对它们进行自签名的公司)(据称,希望)通过其他方式进行彻底审查,而不仅仅是他们的签名。

  • +1 表示“据称,希望” (4认同)
  • 更不用说,更新根证书需要再次执行带外过程。 (2认同)

jos*_*son 7

唯一重要的情况是,如果根由 SHA-1 签名,则它可以由 SHA-1 撤销。也就是说,可以攻击 SHA-1 的人可以为根构造一个撤销。而且我绝对确定浏览器不知道如何保留它,因此破坏者所做的只是断开 SSL 连接。多么蹩脚。