1. PKI 体系概述:公钥基础设施的核心
说到身份认证,绕不开的一个东西就是 PKI。全称叫 Public Key Infrastructure,中文是公钥基础设施。
说白了,PKI 就是一套规则加一套工具。它解决的核心问题就一个:你怎么证明你手里的公钥,真的是属于某个人的?
我刚开始接触这个领域时,觉得这问题很简单。后来踩了坑才明白——没有 PKI,互联网上的加密通信基本就是裸奔。
1.1 什么是公钥基础设施
公钥基础设施,不是某个单一产品。它是一整套体系,包括硬件、软件、人员、策略和流程。
它的目标很明确:
- 生成并管理公钥和私钥
- 绑定公钥和实体身份
- 提供密钥的存储、分发、撤销服务
你可以把 PKI 想象成数字世界的身份证系统。公安局发身份证,PKI 发数字证书。只不过 PKI 管的是机器、服务器、代码签名,甚至物联网设备。
核心要点:PKI 不是加密算法本身,而是管理加密算法所用密钥的一套信任体系。
1.2 核心组件:CA、RA、证书库
PKI 有三个核心组件。我习惯把它们比作「发证机关」「审核窗口」和「档案室」。
1.2.1 CA——证书颁发机构
CA 是 Certificate Authority 的缩写。它是整个 PKI 的信任锚点。
CA 负责:
- 签发数字证书
- 吊销数字证书
- 维护证书生命周期
CA 自己也有一个证书。这个证书是自签名的。也就是说,CA 自己证明自己可信。你信不信它,取决于你的信任列表里有没有它的根证书。
我的经验:我在项目中见过有人把自签名 CA 证书直接部署到生产环境。结果所有客户端都得手动导入根证书,运维同学差点崩溃。记住——自签名 CA 只适合测试环境。
1.2.2 RA——注册机构
RA 是 Registration Authority。它不直接签发证书,而是做审核工作。
RA 的职责:
- 验证申请者的身份信息
- 检查申请材料的真实性
- 把审核结果发给 CA
为什么需要 RA?因为 CA 通常部署在安全级别很高的环境里,不能直接对外暴露接口。RA 相当于一个前置审核岗。
我曾经在一个金融项目中,RA 和 CA 部署在不同的物理机房。RA 审核通过后,通过专线把请求发给 CA 签名。这样做的好处是,即使 RA 被攻破,CA 的私钥也不会泄露。
1.2.3 证书库
证书库就是存放证书的地方。它通常是一个目录服务,比如 LDAP。
证书库提供:
- 证书的存储
- 证书的查询
- 证书吊销列表(CRL)的分发
证书库本身不产生信任。它只是一个存储和分发渠道。真正决定证书是否可信的,是 CA 的签名。
| 组件 | 核心职责 | 是否接触私钥 |
|---|---|---|
| CA | 签发/吊销证书 | 是 |
| RA | 身份审核 | 否 |
| 证书库 | 存储/分发 | 否 |
1.3 信任模型
信任模型决定了「你凭什么相信一张证书」。常见的模型有四种。
1.3.1 层次信任模型
这是最常见的模型。根 CA 在最顶层,下面有二级 CA、三级 CA。证书链从叶子证书一直追溯到根证书。
优点是结构清晰,管理方便。缺点是根 CA 一旦被攻破,整个体系崩塌。
1.3.2 网状信任模型
多个 CA 之间互相交叉认证。A 信任 B,B 信任 C,那么 A 也间接信任 C。
这种模型灵活性高,但路径复杂。我记得有个项目用了网状模型,结果证书链验证时路径选择出了问题,调试了两天才搞定。
1.3.3 桥接信任模型
用一个桥 CA 连接多个独立的 PKI 体系。桥 CA 本身不签发终端证书,只做信任传递。
这种模型适合跨组织、跨行业的互信场景。
1.3.4 信任列表模型
客户端本地维护一个可信根证书列表。只有列表里的根证书签发的证书才被信任。
浏览器和操作系统用的就是这种模型。你想想看,你的电脑里预装了上百个根证书,这就是信任列表。
注意:信任列表模型有个隐患——如果某个根证书被恶意签发证书,所有信任该根证书的客户端都会受影响。我曾经处理过一个案例,某根 CA 违规签发证书,导致所有主流浏览器紧急更新黑名单。
1.4 PKI 核心逻辑图
下面这张图展示了 PKI 的核心组件和信任关系。我建议你仔细看一下,尤其是 CA、RA、证书库之间的数据流向。
1.5 避坑指南
最后分享几个我踩过的坑:
- 证书有效期别设太长。我曾经见过一个项目把服务器证书有效期设了10年。结果半年后密钥算法被发现有漏洞,所有证书都得重签。现在主流CA签发的证书有效期最长也就一年。
- CRL 和 OCSP 必须配。证书被吊销后,如果客户端无法验证吊销状态,那吊销等于没做。我遇到过生产环境没配 OCSP,结果证书泄露后攻击者继续用了三个月。
- 根 CA 的私钥要离线存储。最好放在不联网的硬件加密机里。每次签发二级证书时,才临时接入。这是最基本的物理安全措施。
嗯,PKI 的基础概念就这些。理解了这个框架,后面讲证书链验证和双向认证时,你会觉得顺很多。