公钥基础设施(PKI)支持许多与安全相关的服务,包括数据机密性、数据完整性和终端实体身份验证。从根本上说,这些服务是基于公钥/私钥对的正确使用。该密钥对的公共部分以公共密钥证书的形式发布,并与适当的算法相关联,可用于验证数字签名、加密数据或两者兼而有之。
公钥证书是用于在身份和公钥之间建立关联的签名声明。为该关联担保并签署证书的实体是证书的颁发者,其公钥被担保的身份是证书的主体。为了关联身份和公钥,使用证书链。证书链也称为证书路径或信任链。
什么是证书链?
证书链是证书列表(通常以终端实体证书开头)后跟一个或多个CA证书(通常最后一个是自签名证书),具有以下属性:
每个证书(最后一个证书除外)的颁发者与列表中下一个证书的主题相匹配。
每个证书(最后一个证书除外)都应该由链中下一个证书对应的密钥签名(即一个证书的签名可以使用包含在后续证书中的公钥来验证)。
列表中的最后一个证书是信任锚:您信任的证书,因为它是由一些值得信赖的程序交付给您的。信任锚是CA证书(或更准确地说,是CA的公共验证密钥),被依赖方用作路径验证的起点。
在RFC5280中,证书链或信任链被定义为“证书路径”。换句话说,信任链是指您的SSL证书以及它如何链接回受信任的证书颁发机构。为了使SSL证书可信,它必须可以追溯到它被签署的信任根,这意味着链中的所有证书——服务器、中间证书和根证书,都需要得到适当的信任。信任链分为三个部分:
根证书和中间证书有什么区别?
根证书。根证书是属于颁发证书机构的数字证书。它已在大多数浏览器中预先下载并存储在所谓的“信任库”中。根证书由 CA 严密保护。
中级证书。中间证书像树枝一样从根证书分支出来。他们充当受保护的根证书和向公众颁发的服务器证书之间的中间人。链中始终至少有一个中间证书,但也可以有多个。
服务器证书。服务器证书是颁发给用户需要覆盖的特定域的证书。
证书链用于检查终端实体证书(链中的第一个证书)中包含的公钥和其他数据是否有效属于其主体。为了确定这一点,使用包含在以下证书中的公钥验证最终目标证书上的签名,使用下一个证书验证其签名,依此类推,直到到达链中的最后一个证书。由于最后一个证书是信任锚,成功到达它将证明终端实体证书是可信的。
什么是根证书?
根证书,通常称为可信根,是保护公钥基础设施(PKI)的信任模型的核心。
每个设备都包含一个所谓的根存储。根存储是预先下载的根证书及其公钥的集合,这些证书驻留在设备上。设备要么使用内置于其操作系统中的根存储,要么通过网络浏览器等应用程序使用第三方根存储。根存储是根程序的一部分,例如来自Microsoft、Apple、Google和Mozilla的程序。Microsoft用户使用Microsoft根存储等。
根程序在极其严格的准则下运行。除了CA/B论坛的基本要求规定的规定和限制外,一些根程序(例如Mozilla的)在顶部添加了更严格的要求。
原因很简单:信任。根证书是无价的,因为任何使用其私钥签名的证书都会自动受到浏览器的信任。CA必须遵守严格的要求、审计和公众监督,以确保CA保持足够的社会信任,以值得拥有可信根所带来的技术信任。
当一个CA被建立时,它不是预先信任的。在给定时间内,该CA通过由已受信任的CA颁发的交叉签名中间证书开展业务。交叉证书是由一个CA颁发的数字证书,用于为另一个CA的根证书签署公钥。交叉证书提供了一种创建从单个受信任的根CA到多个其他CA的信任链的方法。一旦CA的应用程序被接受并证明自己值得信赖,它就会将其根添加到根存储中。
受信任的根证书是一种特殊的X.509数字证书,可用于颁发其他证书。虽然任何最终用户TLS/SSL证书的有效期最长为两年(很快为1年),但根证书的有效期要长得多。
此外,每个受信任的CA都有多个根证书,每个根证书具有不同的属性。这在根存储中可见。
在Windows操作系统上,如果您正在查看证书存储,您会在受信任的根证书颁发机构中看到所有根CA证书。默认情况下,这包括与Windows一起安装并通过Windows更新定期更新的公共根CA的列表。
根证书下面的所有证书都信任根证书,根证书的公钥用于签署其他证书。许多软件应用程序继承了此根证书的可靠性,例如浏览器在根证书可信度的基础上验证SSL/TLS连接。由于这些根证书的价值,以及其中一个被破坏所带来的风险,它们很少用于颁发最终实体证书。相反,我们使用中间证书。
什么是中级证书?
随着PKI责任的增加,根CA的数量被复制。另一方面,拥有许多根CA是不切实际的,因为它可能导致欺诈和管理问题。为了解决这个问题,引入了中间证书颁发机构的概念。根证书颁发机构已将其任务委派给中间CA。因此,可以有多个中间CA。中间证书可替代根证书,因为根证书有自己的安全层,可确保其密钥无法获取。中间证书在终端实体证书和根证书之间起到“信任链”的作用。
这就是它的工作原理。根CA使用其私钥对中间根进行签名,从而使其受到信任。然后CA使用中间证书的私钥来签署和颁发最终用户SSL证书。这个过程可以重复几次,其中一个中间根签署另一个中间根,最后签署一个终端实体证书。这些从根到中间到终端实体的链接就是证书链。
根证书和中间证书有什么区别?
我们可以通过查看证书本身来区分根证书和中间证书。如果Issuedto和Issuedby字段相同则它是根证书,否则它是中间证书。另一个识别是查看认证路径。出现在列表顶部的证书是根证书。以下是公共根CA之一的示例:
在Windows环境中,您可以在本地计算机帐户控制台的中间证书颁发机构选项卡中找到中间证书。
虽然使用链式根系统有许多重要的安全原因(如上所述),但在使用它们时也可能面临一些挑战:
安装复杂性增加
当从中间根颁发链接证书时,必须在承载证书的每个web服务器和应用程序上手动加载中间根。这增加了安装链式根证书的复杂性,并且如果web服务器与链式根证书不兼容,则可能导致安全风险。
把赌注押在根的稳定性上
链接的根主要依赖于它们链接到的受信任的根锚点,这意味着中间证书无法控制根证书。因此,如果根CA被破坏或以其他方式删除,那么与之相关联的所有中间CA也将失败。
无法控制根过期
在决定根证书时,您需要仔细选择,因为当该证书过期时,您的所有中间证书也将失效。因此,在新的根证书到期之前,您基本上可以由根证书提供商来管理到新的根认证的转换计划。这个过程是广泛的,对根所有者来说可能是一个相对艰巨的过程。因为新的root必须嵌入到未来的浏览器、web服务器和将使用其证书的应用程序中。在整个过程中,你可能会面临一定程度的复杂性。因此,您需要选择一个您可以信任的根证书提供商,它是彻底的、面向细节的。
由于附加的安全级别,所有主要证书颁发机构都使用中间证书。这有助于在发生错误发布或安全事件时最大限度地减少和划分损坏。您只需撤销中间证书,而不是撤销根证书及其签署的每一个证书,这只会导致由该中间证书颁发的证书组不受信任。