3、根CA与中间CA的角色:根CA的信任锚点地位及中间CA的委派作用

说实话,我刚入行时也犯过迷糊:根CA和中间CA,不都是CA吗?有什么区别?直到我亲眼看见一家公司因为根CA私钥被运维误删,不得不撤销所有已签发证书,瘫痪三天——我才真正理解,根CA和中间CA的角色根本不是一个量级。

这一节,我们就来拆开看:根CA为什么是“老大”,中间CA又凭什么“干活”。

3.1 根CA:信任链的“锚点”

根CA证书是自签名的,没有上级。它本身就是信任的起点。浏览器、操作系统里预置的那些根证书,都是这种——它们定义了“谁可以信任”。

我个人习惯把根CA看作种子。种子一旦坏掉,整棵信任树就完了。所以根CA必须离线、冷存储、严格控制访问。我的经验是,根CA主机的网口都能拔掉最好——平时根本不需要联网。

根CA的核心属性:

  • 自签名证书,无父级CA
  • 生命周期极长(通常20年+)
  • 私钥必须离线、硬件加密存储
  • 签名极其慎重——一年可能就用几次
  • 一旦泄露,整个PKI体系重建

你想想看,如果根CA私钥被偷了,攻击者就可以伪造任何由它签发的证书——不管是中间CA还是终端用户。这可不是闹着玩的。我在项目中见过有人把根CA私钥直接放在运维跳板机上,吓得我当时就建议重做。

3.2 中间CA:承担“脏活累活”

中间CA的角色就是委派。根CA委派给它签发证书的权力,但自己躲在后边。中间CA可以有很多个,每个负责不同的场景:比如一个给内部员工,一个给外部客户,一个给IoT设备。

为什么这么设计?说白了就是隔离风险。万一某个中间CA私钥泄露,我只需要吊销那个中间CA的证书,重新签发一个就行。根CA纹丝不动。

对比项 根CA 中间CA
签名方式 自签名 由根CA或上级CA签发
信任来源 自身(信任锚点) 根CA的委派
私钥存储 离线冷存储,HSM 在线或离线,HSM可选
使用频率 极低(年/次) 高(天/次)
泄露影响 整个体系崩溃 仅影响该分支,可吊销恢复
生命周期 20年+ 2~5年,可更新

我的建议:不要只设一层中间CA。我习惯用两层:策略CA + 签发CA。策略CA定义证书模板和有效期,签发CA负责实际签名。这样策略变更时不用动根,签发CA挂了还能迅速重建。

3.3 委派链的“信任传递”

客户端验证证书时,会沿着证书链向上追溯,直到找到它信任的根证书。整个过程就是信任传递。中间CA证书由根CA签名,终端证书由中间CA签名——每一层都依赖上一层的签名。

我遇到过一种坑:中间CA证书的有效期比根CA短,结果中间CA过期后,所有下级证书都变无效了。嗯,所以中间CA有效期必须覆盖其签发的所有证书的最晚时间。

警告:不要将中间CA的Key Usage随便设置。根CA的Key Usage通常只含keyCertSign和cRLSign。中间CA可以多一个digitalSignature用于OCSP响应签名。乱加会破坏信任链的安全性。

3.4 实战架构:三层模型

我在实际项目中一般采用三层模型:

  1. 根CA:离线,冷存储,只签发下级CA证书
  2. 策略CA:在线但低频率,定义证书策略,签发签发CA
  3. 签发CA:在线高频率,实际签发终端证书

这样可以做到:根CA一年插一次电源就够了,策略CA每周开机一次,签发CA24小时在线。风险最大的签发CA即使被攻破,也只需吊销它并重建,根源不动。

根CA与中间CA分层信任模型 根CA 信任锚点 · 离线 · 自签名 中间CA (策略) 定义策略,低频签名 中间CA (策略) 备用策略,灾备 签发CA-A 高频签名 签发CA-B 高频签名 签发CA-C 高频签名 终端证书(员工) 终端证书(客户) 终端证书(IoT) 根CA一年 开一次机 策略CA 每周开机 签发CA 24小时在线

3.5 避坑指南:我踩过的几个坑

  • 根CA有效期太短——我见过有人设5年,结果3年后所有中间CA都要跟着换一轮。根CA至少20年。
  • 中间CA数量不限——其实每多一个中间CA就多一份密钥管理成本。我建议2~5个就够,按场景分。
  • 把根CA主机接入网络——哪怕只是管理口。我曾经在一个项目中,根CA虽然离线,但同事为了方便管理开了SSH,结果被漏洞扫描到。从此我强制根CA只通电源和显示器,网线全拔。
  • 中间CA的CRL分发点没配好——客户端验证时找不到CRL,会直接拒绝证书。记得每次签发前检查CDP和AIA字段。

小技巧:写一个脚本,每次生成中间CA证书后自动校验证书链长度和密钥用法。我习惯在CI中加这一步,避免人工检查遗漏。

好了,根CA与中间CA的角色分工就这么简单,但又极其重要。记住:根CA是国家的元首,中间CA是执行部门——元首不能天天批文件,执行部门也不能拥有核按钮。下一章我们会深入密钥生成的具体操作。