根证书(Root Certificate)与中间证书(Intermediate Certificate)构成了信任链或证书路径,定义了实际 SSL 证书与受信任 CA 之间的关系。在线通信与电子商务行业建立在信任之上——访问一个不安全的保险站点,你可能落入仿冒原站的钓鱼网站。如何判断所访问的站点真实与否?安装数字安全证书即可建立站点信任。SSL 证书是站点所有者用于保护传输中数据的数字安全证书,由证书颁发机构(CA)签发并安装在 Web 服务器上,通过支持数据隐私、数据完整性与站点真实性来保障电子通信安全。尽管站点所有者了解安装 SSL 证书的重要性,却往往不熟悉相关技术术语。因此当他们从 CA 收到需要安装到服务器的各类 SSL 文件邮件时,常面露困惑。对根证书、中间证书以及信任链及其层级的不熟悉,正是撰写本文的初衷。

什么是根程序(Root Program)

每台设备都包含一个根存储(root store),用于存放迄今下载的所有根证书。设备使用由操作系统支持并推荐的根存储,有时也会通过浏览器偏好一个全新的第三方根存储。例如:微软用户使用 Microsoft 根存储;苹果(iOS)用户使用系统内的 Apple 根存储;多数安卓用户使用 Google 根存储。这些根程序有由 CA/B 论坛基线要求定义的固定规则,有助于提升用户间的信任门槛。CA 签发证书时,根证书被附加到根存储中,它价值极高,因其由自身私钥进行数字签名,使该证书在主流浏览器中更值得信赖。根证书有效期极长(约 25 年),并用于签发其他证书。CA 为站点所有者提供不同的根以确保 Web 安全,从这些根签发的证书真实可靠,因此被称为信任链。

什么是证书链

无论称作证书链(Certificate Chain)还是信任链(Chain of Trust),含义相同。该链由 CA 证书(站点所有者购买)与一张 SSL 证书组合而成,证书的接收方与发送方都能确知证书的真实性。其特性包括:

- 链包含颁发者信息,即签发该证书的 CA
- 当前证书的颁发者与下一张证书的主体相同
- 证书使用与层级中该证书对应的秘密密钥签名
- 最后一张证书(信任锚)是来自可靠来源的受信任 CA 证书

识别证书链

如前所述,链中每张证书都由秘密密钥签名,用于识别链中的下一张证书。购买 SSL 证书需要生成:CSR(证书签名请求)+ 私钥。当 CSR 送达 CA,CA 会用签署根证书的私钥为你的 SSL 证书签名。浏览器在信任证书前会验证两点:证书是否由根私钥签名;以及层级中所有证书(服务器、中间、根)是否全部通过验证。两者皆为正向响应时,浏览器才会信任该证书。证书链始于 CA 签发的根证书,后接一张或多张中间证书,最后以末张证书(SSL 证书)结束。

根证书

这张数字证书的"家"是信任存储(trust store),因此存放其中。由于归签发 CA 所有,CA 会对这些证书严密监控。

中间证书

这些证书是受保护的根证书与服务器(端点)证书之间的媒介。链中必须至少有一张中间证书,但也可以存在多张。

服务器证书(SSL 证书)

该证书针对用户生成 CSR 的域名签发,保护根域,多数情况下也保护子域。全部证书的签名都会用证书中的公钥验证以确认其真实性;当最后的服务器证书验证通过,即证明 SSL 证书真实可信。若证书链不完整(缺少某张证书),浏览器往往会报错。

什么是中间证书

CA 在签发 SSL 证书时非常谨慎,避免通过根直接签发服务器证书,因为那很危险且可能助长欺诈。根十分珍贵,因此不建议部署多个根 CA。为保护这些根并解决该问题,引入了中间 CA,它们作为额外的安全层接管根 CA 的全部任务。根 CA 的密钥不可访问,因此中间证书充当根 CA 与末张证书之间的媒介。中间根经(私钥)签名后由 CA 签发,可靠性提升;CA 随后用同一把私钥签署端点 SSL 证书,最终将 SSL 证书发给对应站点所有者。若存在多张中间证书,过程会重复多次:一张中间根签署下一张中间根,CA 可用它们签署最终的 SSL 证书。浏览器借此识别根 CA,同时这些证书也用于接受服务器证书。你现在应该清楚为何 SSL 文件夹除主证书外还有中间证书。就有效期而言,中间证书的有效期通常长于 SSL 证书。

什么是根证书

根证书是一张位于信任链顶端的 X.509 数字证书,被视为 PKI(公钥基础设施)的支柱。每台设备都包含根存储,其中存有可靠 CA 的签名及它们的公钥。浏览器确认 CA 可靠性时会与自己的根存储比对;若 CA 名称与根存储中的名称不符,浏览器会向用户发出错误警告,提示其正在访问不安全站点。根证书是领导者,其他签发的证书是追随者——若根密钥被攻破,对 CA 即是威胁,该 CA 将被从根存储中删除,其签署的全部证书也将作废。这类灾难可通过将根密钥存放在安全位置(即硬件安全模块 HSM)来避免。根证书有效期最长,其可靠性在由自身私钥数字签名后进一步增强。每个 CA 拥有不同的根证书与属性,均可见于信任存储中。

根证书与中间证书的差异

定义
根证书是拥有可靠根的 CA,存储在所有全球浏览器中。中间证书是提供中间根的 CA,不使用浏览器存储,而是链接到第三方根。

在信任链中的价值
根证书极其珍贵,在信任链中的价值高于中间证书。中间证书价值较低,作为中介存在。

签发
根证书禁止 CA 直接签发 SSL 证书,而是借助中间证书签署端点(SSL)证书以防泄露。中间证书是保护根证书并通过签署中间体来签发 SSL 证书的中间人。

证书吊销
紧急情况下若需吊销证书,根证书无需被吊销。中间证书在紧急情况下会被吊销以防损害,所有相关中间体都将被怀疑并移除。

签名
根证书用私钥签署中间证书。中间证书用同一把密钥签署其他中间证书(如有)与端点证书。

签发名称
根证书的"颁发给"与"颁发者"字段名称相同;中间证书则不然。

证书路径
根证书在受信任根证书颁发机构文件夹的证书链中处于最顶端,路径仅单层。中间证书位于控制台根文件夹的"中间证书颁发机构"选项卡中,可能包含更多中间体与更多层级。

紧急情况下的损害
若根证书被篡改,可能造成巨大损害,因为黑客可访问整个 PKI 并破坏整条信任链层级,因此建议将该证书离线保存以限制其暴露范围。若中间证书被篡改,则无法使用,只能将其与其他中间体一并移除以防进一步损害。

验证周期
根证书的验证周期通常为 10 至 20 年。中间证书的验证周期限制在 1 或 2 年。

访问方式
根证书由根存储访问。中间证书由私钥访问。

存储安全协议
根证书存放在硬件安全模块(HSM)中。中间证书存放在 SSL 安装文件夹中。相关内容可参阅"SSL 中的 CA Bundle 是什么"一文。

结语

理解这些技术细节并处理安全证书颇具挑战。读完本文,你应已了解两种证书在性质与功能上相似,却仍存在显著差异。根证书离线保存,出于安全考虑从不抵达终端用户;中间证书则在线保存,用于签名与签发其他中间体及端点证书。简而言之,两者在 PKI 的信任链中都至关重要,缺一则链断信任破。因此务必同时使用这两种证书来保护你的系统与数字基础设施。