什么是证书颁发机构列表?在哪里可以找到它?
PKI行业专家Ryan Hurst估计,目前大约有85个CA,其中屈指可数的几个“占了网络上所有证书颁发机构的99%”。您知道这些CA是谁吗?或者在哪里可以找到根证书颁发机构的列表?
受公众信任的证书颁发机构 (CA) 使通过互联网安全地发送和接收数据成为可能。证书颁发机构列表是这些实体的可信根的汇编,通常包括DigiCert、Sectigo等商业名称,以及美国联邦公钥基础设施 (US FPKI)等政府实体。
但是,在哪里可以找到证书颁发机构列表?它们是如何使用的?它们有什么用途?我们将首先探索各个受信任的证书颁发机构列表,然后通过回答以下问题和其他常见问题 (FAQ) 来总结。
让我们来讨论一下。
3个常见的证书颁发机构列表(以及在哪里找到它们)
想知道可信证书颁发机构的列表是什么样子的,以及在哪里可以找到它们吗?让我们先来探索一下在哪里可以找到三个最常见的证书颁发机构。
证书颁发机构列表 #1:Chrome根存储区
另一个流行的证书颁发机构列表由Google的Chromium 项目运营。Google Root Store遵循Chrome根证书计划政策,其中包含Google信任的、可用于其Chrome浏览器连接的有效CA列表。
截至撰写本文时,Google Root Store目前为版本16:
图片说明:Google Chrome浏览器中提供的Root Store信息片段。
但是您可以在Chrome浏览器中的哪里找到该信息?
在您的Chrome网络客户端中打开一个新窗口。
导航到chrome://system。
点击左侧栏中chrome_root_store旁边的展开按钮(如下面的屏幕截图所示)。
在那里,您将看到Google信任的所有CA及其哈希值的完整列表。
证书颁发机构列表 #2:Mozilla Root Store
接下来,让我们快速浏览一下Mozilla的Firefox浏览器的根证书存储区。此根证书存储区包含CA所有者及其特定根证书的列表。您可以针对列出的各个根CA执行多种操作:查看、导入、导出、编辑信任、删除或取消信任。
Mozilla信任的证书颁发机构列表可通过Firefox浏览器获取,并根据Mozilla根存储策略进行维护。您可以通过以下方式找到它:
导航至主菜单中的“设置” 。
在左侧导航栏中选择隐私和安全。
向下滚动到“安全性”并找到标有“证书”的子部分。
单击“查看证书”并选择“颁发机构”选项卡。
图片说明:Mozilla的Firefox浏览器中可用的Mozilla根存储证书管理器的屏幕截图。
您还可以通过Mozilla Wiki页面访问Mozilla的包含CA证书列表,其中包括TLS 和非TLS 用例的.txt 和.csv文件。
证书颁发机构列表 #3:Windows
正在寻找Microsoft信任的证书颁发机构列表?您可以在Microsoft网站上找到Microsoft 信任根计划。(Windows操作系统和Microsoft Edge浏览器都使用该计划。)
如果您是Windows用户,您可以查看您机器的操作系统 (OS) 来亲自查看列表:
单击“开始”菜单。
在运行栏中输入MMC 。
选择以管理员身份运行。
这将打开您的MMC控制台,您可以在其中添加证书管理单元并查看其中列出的受信任 CA。以下是当您通过这种方式访问MMC控制台时,您将看到的受信任证书颁发机构列表的屏幕截图示例:
图片说明:MMC控制台的屏幕截图,显示了我的Windows 10设备上受信任的根证书颁发机构列表。
在哪里可以找到其他证书颁发机构列表
这三个列表并非唯一可用的列表。拥有并运营根CA的证书颁发机构通常也会在其网站上发布其证书颁发机构的列表。例如:
DigiCert的DigiCert根证书和中间证书列表
Thawte的根证书颁发机构列表
美国财政部的CRL和证书列表
还有一些第三方机构托管着他们信任的根CA列表,用于其软件应用程序和其他系统。这些其他证书颁发机构列表的一些示例包括:
Apple Trust Store(当前和过去的列表)
CheckTLS的受信任根证书颁发机构列表
MATTER的分布式合规账本(DCL)
PKI联盟的信任列表
图片说明:MATTER'S DCL 批准证书列表中的一个示例,可用于颁发证书以保护消费者家庭智能设备的安全。
您可以使用3种工具来让证书颁发机构列表发挥作用
好的,假设你现在可以访问这些列表了。那么,如何使用它们呢?
Mozilla证书数据
像mozilla_certdata这样的应用程序会解析Mozilla的源certdata.txt文件,以获取此类根CA信息,同时考虑信任记录。然而,由于前面提到的一些问题,这并不总是理想的。
认证
您还可以使用Certifi之类的工具,这是一个软件库,可以简化从Mozilla的包含CA证书列表中提取CA捆绑数据(即根 CA 和中间 CA)的过程。它包含支持多种语言的软件包,例如 Python、Ruby、Golang (Go) 等。这使得根据 Mozilla 列表验证CA证书更加容易。
MKCert API
MKcert是另一个可能有用的工具,它可以提取并解析Mozilla的受信任列表。然而,这个开源工具的不同之处在于,它允许你使用API来确定要信任哪些CA(而不是盲目地依赖 Mozilla 或其他浏览器的声明),并下载包含你指定CA的信任文件。
现在您知道在哪里可以找到所有这些独立列表,以及可以使用哪些工具来使用它们了。但是,难道没有一个全面的资源可以一站式为您提供证书颁发机构列表吗?我们已经为您准备好了。
通用CA数据库 (CCADB):CA 列表的圣杯
通用CA数据库是Microsoft、Mozilla 和 Google 等根证书存储运营商的一站式资源。它是一个集中式存储库,DigiCert、Sectigo、Visa、Amazon等CA可以在此发布其根证书存储的相关信息,以确保这些根证书存储运营商获得一致、最新且准确的信息。
追踪每个CA的根证书和ICA证书信息既麻烦又繁琐。为了简化此过程,各CA将其列表共享到这个集中式存储库。这使得CCADB成为目前最全面的证书颁发机构列表,因为它甚至还包含已撤销CA的列表。
CCADB政策的“一般规定”部分规定,CA所有者必须确保其组织、根CA和从属CA证书的信息保持最新。您可以在CCADB中查看Microsoft和Mozilla 根证书库中使用的CA证书。
图片说明:通用CA数据库中列出的一些CA中级证书的示例。
有多少CA参与了CCADB?
据我所知,几乎所有的CA都包含。CCADB包含了所有在几个著名根存储运营商(例如 Apple、Google Chrome、Microsoft 和 Mozilla Firefox)列表中拥有根CA或中间 CA 的 CA。
例如,Apple根证书计划政策要求第2.1.1节规定:“自2022年4月1日起,CA提供商必须在CCADB中披露所有链接到Apple根计划中包含的CA证书的CA证书。”
您可以下载“所有证书记录报告”列表(上图为其中一部分),其中包含已提交给 CCADB的8,600 多个中间CA证书和根CA证书。请注意,此列表包含已撤销和未撤销的信任链证书。因此,请谨慎使用此信息。
证书颁发机构列表用例
现在我们知道了这些不同的证书颁发机构列表是什么以及在哪里可以找到它们,现在是时候探索如何处理它们了。
通常谁使用这些列表以及为什么?
从技术上讲,任何人都可以在线访问证书颁发机构列表。每个证书颁发机构通常都会在其网站上发布一份单独的根证书和/或中间证书列表。(我们稍后会在常见问题解答部分探讨这些列表的示例。)
这些列表对于以下情况很有用:
使用数据进行研究和分析的研究人员。
软件开发人员使用它们来创建与WebPKI和特定设备操作系统交互的应用程序。
PKI工程师和IT管理员需要确保他们的软件应用程序和网络使用有效证书(或者他们需要导入它们)。
您可以在哪里使用这些列表?
所有支持或依赖证书颁发机构根目录的硬件和软件应用程序都应包含证书颁发机构根目录。这包括您的浏览器、操作系统、Web客户端等。
警告:使用正确的列表来完成正确的任务
证书颁发机构列表是万能的解决方案吗?不是。请根据预期用途使用合适的根CA。否则,后果不堪设想。
因此,除了包含所有根CA和中级CA的全面列表外,CCADB还提供了针对特定用途的更有针对性的列表。例如,CCADB资源页面包含以下列表:
代码签名根CA:这些列表的明确目的是为代码签名用例提供可信证书。
电子邮件 (S/MIME) 根CA:此列表用于验证用于电子邮件数字签名和加密的证书。例如,Google的S/MIME受信任证书颁发机构列表。
服务器身份验证根CA:此列表用于SSL/TLS握手过程中的SSL/TLS身份验证,以建立安全的加密连接。
CA列表并非用于交叉目的
为什么使用S/MIME 根还是服务器身份验证根很重要?Mozilla表示,根存储滥用是一个大问题,主要原因如下:
特定列表中的每个 CA 都会根据其特定用途的既定标准进行评估。例如,S/MIME根证书的流程、控制措施和审核标准与SSL/TLS和代码签名的根证书不同。这意味着您可能会将根证书用于非预期用途。
将根存储列表用于非预期用途会使您面临风险。Mozilla将滥用根存储描述为“与证书验证失败无异”。
您最终可能会信任不受信任的CA。如果应用程序开发人员尝试使用脚本解析数据,可能会无意中信任未经评估或明确不信任的证书。无论哪种情况,这都是坏消息。
Mozilla建议使用CCADB提供的证书列表:
我们强烈建议应用程序开发者确保其应用程序中使用的根证书列表已根据其用例进行精心设计。此外,应用程序开发者应仅使用Mozilla/NSS根证书存储进行TLS或S/MIME传输,方法是使用CCADB资源页面上提供的链接 ,该链接根据其所针对的信任位(密钥用途)列出了Mozilla/NSS根证书存储中的证书。
总结:如果您要使用其中一个列表,请确保仅针对该特定列表的预期用途和应用进行使用。
关于证书颁发机构列表的常见问题 (FAQ)
现在,你们中的一些人可能是第一次接触Hashed Out,或者可能因为想了解什么是证书颁发机构列表以及如何使用它而找到了这篇文章。了解了这些之后,让我们来回答一些关于证书颁发机构列表的常见问题。
什么是证书颁发机构列表?
证书颁发机构列表是一份公开信任的根证书颁发机构名册,它们有助于构建公司赖以保护公共和/或私有网络的“信任链”。这些机构负责签署颁发数字证书的CA,从而实现身份验证、加密和数据完整性保护。
根CA是互联网数据安全的MVP,因为没有它们,开放网络上就不会有安全的连接。我们仍然需要秘密地面对面地交换私钥,交换加密数据。
Web浏览器、操作系统、软件应用程序和许多其他系统使用证书颁发机构列表来验证证书是否可信以及是否可以依赖进行验证。
证书颁发机构列表是否包含有关私有CA的信息?
通常,当有人提到证书颁发机构列表时,他们指的是公共信任的根CA。我之前讨论过公共CA和私有CA,这里简单回顾一下:
公共信任的CA提供端点证书,使您能够信任第三方网站连接、应用程序和电子邮件。
私有CA允许您为网络内的受信任设备、用户、文件、应用程序、服务和电子邮件颁发证书。