当我下载 Mozilla 之类的浏览器时,它捆绑了几个根证书。
我如何相信这些证书是合法的?我怎么知道我的下载不包含一些伪造的根证书?
我知道软件本身将在下载过程中通过完整性检查(排除任何篡改),但是完整性检查本身依赖于我现有的浏览器信任用于通过 HTTPS 下载 Mozilla 的浏览器。基本上,Mozilla 下载本身依赖于下载过程中某处所需的其他一些根证书。这似乎是一个递归问题。
所以我的问题是如何信任浏览器内置的根证书?
当我下载 Mozilla 之类的浏览器时,它捆绑了几个根证书。
我如何相信这些证书是合法的?我怎么知道我的下载不包含一些伪造的根证书?
我知道软件本身将在下载过程中通过完整性检查(排除任何篡改),但是完整性检查本身依赖于我现有的浏览器信任用于通过 HTTPS 下载 Mozilla 的浏览器。基本上,Mozilla 下载本身依赖于下载过程中某处所需的其他一些根证书。这似乎是一个递归问题。
所以我的问题是如何信任浏览器内置的根证书?
首先,你是对的,这是一个递归问题。SSL 有点像纸牌屋,因为您总是必须信任某些东西,包括那些告诉您该信任谁的人。多位专家预测 SSL 的崩溃:
话虽如此,这就是我们现在所拥有的一切,所以恐慌无济于事。
如果你担心你刚下载的程序也安装了一些恶意根证书,有扫描仪可以检查它们,比如这个和这个(注意:我不能推荐这些,因为我没有试过了,所以做你的研究)。
或者,如果您希望手动扫描它们, Microsoft 的Trusted Root Certificates Program 维护了一个非常好的列表。
每个操作系统安装程序包都经过签名。例如,在 Windows 中,当您下载 Firefox Installer Stub 时,您可以通过右键单击 exe 文件并转到“签名”选项卡来检查它的属性:
然后,单击“详细信息”以查看更多信息,您将看到“签名者信息”以及使用 Windows 内置证书检查的任何“确定”。
最后通过谷歌搜索根证书指纹来检查整个链的根证书:
总而言之:
似乎链中的 Firefox 二进制根证书是这样的: https ://assured-id-root.digicert.com/info/index.html - 有匹配的指纹“05:63:B8:63:0D:62:D7: 5A:BB:C8:AB:1E:4B:DF:B5:A8:99:B2:4D:43"。
同样,如果您有疑问,可以检查每个根证书。