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、证书库之间的数据流向。

PKI 核心组件与信任关系 根 CA 二级 CA 二级 CA RA 注册机构 RA 注册机构 证书库 / LDAP 说明:CA 签发证书,RA 审核身份,证书库存储和分发。信任从根 CA 向下传递。

1.5 避坑指南

最后分享几个我踩过的坑:

  • 证书有效期别设太长。我曾经见过一个项目把服务器证书有效期设了10年。结果半年后密钥算法被发现有漏洞,所有证书都得重签。现在主流CA签发的证书有效期最长也就一年。
  • CRL 和 OCSP 必须配。证书被吊销后,如果客户端无法验证吊销状态,那吊销等于没做。我遇到过生产环境没配 OCSP,结果证书泄露后攻击者继续用了三个月。
  • 根 CA 的私钥要离线存储。最好放在不联网的硬件加密机里。每次签发二级证书时,才临时接入。这是最基本的物理安全措施。

嗯,PKI 的基础概念就这些。理解了这个框架,后面讲证书链验证和双向认证时,你会觉得顺很多。