术语表

根证书 (Root Certificate,信任锚)

最后核实

定义

根证书是位于证书链顶端、由 CA 自签名的证书,预装在操作系统或浏览器的信任库中,作为验证其他证书的信任锚。

根证书是 CA 顶级密钥对应的 自签名证书:颁发者和主体相同,上面再没有任何机构为它担保。客户端之所以信任它,是因为操作系统、浏览器或管理员事先把它放进了 信任库。根私钥通常离线保存在硬件安全模块(HSM)中,主要用来签发 中间证书 和 CRL。

为什么重要

所有公网 TLS 证书最终都依赖客户端信任库里的某个根证书,增删一个根会影响海量设备。Baseline Requirements 禁止直接用根私钥签发用户证书,所以证书链中总有中间证书。根证书有效期很长,常见 20 年以上,如今各根证书计划也在推动轮换:Chrome 根证书计划会按时间表移除密钥材料超过 15 年的根。Let's Encrypt 的 Generation Y 体系就新增了 ISRG Root YR(RSA-4096)和 ISRG Root YE(ECDSA P-384)。老旧安卓设备、长期不升级的嵌入式系统和旧版 Java 运行时的信任库更新慢,是新根证书兼容性问题的主要来源。

例子

openssl x509 -in root.pem -noout -subject -issuer

对根证书而言,输出的 subject 和 issuer 两行完全相同。

常见误区

  • 服务器必须把根证书一起发送。 客户端本地已有根证书,服务器发送的根不会因此获得信任,只会多占握手流量。
  • 安装一个根证书无关紧要。 你安装的根可以为任何网站担保,企业 HTTPS 解密设备和部分恶意软件正是靠这一点截获流量。
  • 根证书和中间证书可以混用。 根证书是客户端本地的信任锚,中间证书则必须由服务器下发,弄混会导致证书链错误。

延伸阅读