我知道 SSL 证书不能再使用 SHA-1 进行签名。但是,所有 CA 根证书都是 SHA-1 签名的(大多数情况下)。这是否意味着不再受“你奶奶的 SSL 商店”信任的相同算法适用于世界上最安全的证书?
我是否遗漏了什么?(密钥用途?密钥大小?)
答案1
根 CA 证书的签名根本不重要,因为无需验证它们。它们都是自签名的。
如果您信任根 CA 证书,则无需验证其签名。如果您不信任它,其签名对您来说毫无价值。
编辑:下面有一些非常相关的评论。我不太愿意复制或改写它们,并把它们的功劳归于作者而不是作者。但我欢迎大家为这个答案添加解释。
答案2
归根结底,根证书是自签名的。除了它自己之外,它从未被其他实体签名。根证书通过带外流程获得信任,例如将其提交给浏览器的受信任发布者列表,或让 Microsoft 接受它以将其插入到 Windows 受信任发布者的默认列表中。
这些证书(以及自行签署证书的公司)(据称,希望如此)除了签名之外还通过其他方式进行了彻底审查。
答案3
唯一重要的情况是,如果根证书由 SHA-1 签名,则可以通过 SHA-1 撤销。也就是说,能够攻击 SHA-1 的人可以构造根证书的撤销。我完全确定浏览器不知道如何保存这一点,因此破坏者所做的只是断开 SSL 连接。太糟糕了。
答案4
对于根 CA,您信任 CA 的公钥(捆绑在 CRT 中),而不管其自签名。
使用 .CRT 文件格式而不是原始公钥 .PEM 来描述 CA 可以在其中捆绑更多详细信息 - 例如 CA 名称 - (再次强调,签名毫无价值)