公钥基础设施(PKI)与证书权限
PKI 是什么?说白了,就是一个大规模分发公钥的信任体系。你想想,互联网上几亿个实体,怎么确保你拿到的公钥真的是对方本人发的?靠的就是 PKI。我管密钥平台那会儿,发现很多团队把 PKI 和 CA 划等号,其实不对。CA 只是 PKI 的一个核心组件。
4.1 几个核心角色
PKI 里最关键的角色有三个:
- 证书颁发机构(CA)——签发证书的权威实体。
- 注册机构(RA)——负责验证申请者身份,把结果告诉 CA。
- 证书库(Repository)——存放证书和吊销列表(CRL)的地方,通常是 LDAP 或 HTTP。
我个人习惯把 RA 看作“风控审核”,CA 只负责“盖章”。这样职责分离,出事也好追溯。曾经有个客户把 RA 和 CA 合在一起,结果私钥泄露后连谁审核的都不知道,查了半天。
4.2 CA 的层级与信任链
CA 不是单打独斗的。根 CA(Root CA)自签证书,然后签发下级中间 CA。中间 CA 再签发终端实体证书。这条链就是证书链。
为什么非要搞多层?嗯,安全考虑。根 CA 私钥是整个信任体系的命根子,平时离线保存。中间 CA 在线签证书,就算被攻破,吊销中间 CA 就行,不用动根。我经历过一次中间 CA 私钥泄露的事故,好在我们把根 CA 扔在离线 HSM 里,影响范围小了很多。
- 拿到终端证书,读取它的“签发者”字段。
- 找到签发该证书的 CA 证书(通常是中间 CA)。
- 用 CA 的公钥验证终端证书的签名。
- 继续往上找,直到根 CA 证书(信任锚)。
- 根 CA 自签,停止验证。
4.3 信任模型
公钥分发不是简单地“我发给你,你就信”。信任模型定义了“谁可以信任谁”。常见的有三种:
| 信任模型 | 特点 | 适用场景 |
|---|---|---|
| 层次模型 | 单根 CA,所有证书都溯源到它 | 企业内部 PKI、政府 CA |
| 网状模型 | 多个 CA 互相交叉认证 | 互联网证书联盟(如 CA/B Forum) |
| 桥 CA 模型 | 一个桥 CA 连接不同信任域 | 跨组织联盟可信互认 |
我建议别在内部搞网状模型,否则证书链验证路径爆炸。层次模型最清晰,维护成本低。
4.4 证书链完整性的坑
你想想看,浏览器会缓存部分根证书,但中间 CA 必须随着终端证书一起下发。很多开发者忽略这一点。
4.5 公钥分发机制
公钥分发不是靠“微信发送”。PKI 依赖证书库和在线状态协议:
- CRL(证书吊销列表)——CA 发布的黑名单,定期拉取。
- OCSP(在线证书状态协议)——实时查询证书是否被吊销。
我跟你说,OCSP 响应得有 CA 签名,不然攻击者可以伪造“证书有效”。我曾经见过一个系统直接跳过 OCSP 检查,认为证书有效就是安全的,结果被中间人攻击了。
4.6 整个信任体系长什么样
下面这张图展示了典型的 PKI 证书链和信任流。根 CA 在最上层,中间 CA 在中间层,终端证书在最下层。箭头代表“颁发”关系,虚线代表“信任”关系。
4.7 实际工作中的选择建议
还有一点要留意——证书吊销。CRL 有延迟,OCSP 必须做签名。我见过很多企业只配了 CRL 没配 OCSP,导致证书吊销后几个小时才生效。攻击者利用这个窗口照样能搞事。
4.8 总结
公钥基础设施解决的是“公钥分发的信任问题”。CA 是信任的起点,证书链是信任的传递路径,信任锚是验证的终点。别把 CA 当成万能钥匙,权限模型和职责分离才是 PKI 安全的基础。