1. PKI基础概念:公钥基础设施定义、组成要素、信任模型
很多人一听到“PKI”就觉得高大上,甚至有点虚。其实说白了,它就是一套帮我们解决“你到底是不是你”以及“你发的消息有没有被改过”的基础设施。我刚开始接触证书链验証时,也翻过车——有一次线上告警,整条链路都断了,后来排查发现是根CA证书在本地信任库里被误删了。从那以后我养成一个习惯:巡检先看信任锚。
这一章我们先把地基打牢。先弄清楚PKI到底是什么,由哪些部件组成,以及信任是怎么一层层传递的。你把这些搞懂了,后面30章才会越看越顺。
1.1 什么是公钥基础设施?
公钥基础设施,英文叫 Public Key Infrastructure,缩写PKI。它是一套综合性的框架,包含硬件、软件、人员、策略和流程,目的是利用公钥密码技术,在开放网络中提供安全服务——认证、完整性、机密性和不可否认性。
我个人喜欢用一句话总结:PKI就是一个“管证书”的体系。它负责证书的生成、分发、使用、吊销和更新。你想想看,我们每天都在用HTTPS、电子签名、VPN,背后都离不开PKI。
| 安全目标 | PKI 提供的保障 | 日常例子 |
|---|---|---|
| 身份认证 | 确保证书持有者身份真实 | 银行U盾登录 |
| 数据完整性 | 防止传输数据被篡改 | 软件签名校验 |
| 机密性 | 加密传输,第三方无法阅读 | HTTPS 网页 |
| 不可否认性 | 行为一旦发生,无法抵赖 | 电子合同签署 |
1.2 PKI的核心组成要素
一套成型的PKI体系,至少包含四个核心角色:CA、RA、证书库,以及终端实体。嗯,这里要注意,证书库常常被新手忽略,但它却是巡检中最容易出问题的地方。
1.2.1 证书颁发机构(CA)
CA是整个PKI的“核”,负责签发、吊销和管理证书。它既要维护自己的公私钥对,又要对申请者的身份做最终担保。我在项目里见过两种CA部署模式:
- 离线根CA:根私钥放在硬件安全模块(HSM)里,物理隔离,只在签发下级CA时才上电。这种做法最安全,但操作繁琐。
- 在线中间CA:日常签发终端证书,一旦私钥泄露,可以快速吊销并从根CA重新签发。
1.2.2 注册机构(RA)
RA是CA的前端“柜台”,负责处理证书申请、身份审核、密钥生成等事务。它不直接签发证书,但会验证申请者身份后,把合法请求提交给CA。很多场景里RA和CA部署在同一台服务器上,但为了安全性,我建议物理分离——RA面向用户,CA躲在防火墙后面。
1.2.3 证书库与目录服务
证书库说白了就是一个公开可读的存储仓库,用来存放已签发证书和证书吊销列表(CRL)。最常见的实现就是LDAP目录服务,也有些企业用HTTP服务器或区块链存储。
- 证书发布:终端证书和中继CA证书会定期推送到证书库。
- CRL分发:吊销的证书会被列入CRL,验证者需要定期下载以确认证书状态。
- OCSP:一种实时在线查询证书状态的协议,比CRL更及时,但需要OCSP响应器持续在线。
我在多家金融机构的巡检中发现,CRL的更新频率和证书库的可用性是最容易掉坑的点。比如CRL缓存过期了,业务系统依然使用旧CRL,导致已吊销证书被误认为有效。所以我会在巡检脚本里加入CRL nextUpdate时间的合法性检查。
1.3 信任模型
信任模型决定了“我凭什么相信这个证书”。说白了,就是信任怎么从一个锚点传递到终端实体证书。常见的模型有三种:层次模型、网状模型和桥CA模型。我在金融行业见过最多的是层次模型,因为它结构清晰,适合严格管控。
| 信任模型 | 结构特点 | 优点 | 缺点 |
|---|---|---|---|
| 层次模型 | 树形,根CA→中间CA→终端证书 | 路径清晰,认证简单;根CA可离线 | 单点故障(根CA风险集中) |
| 网状模型 | 多个CA互相交叉认证 | 灵活,无单点故障 | 路径复杂,验证开销大;容易出现环 |
| 桥CA模型 | 中心节点桥接不同PKI域 | 可对接异构PKI,扩展性好 | 桥CA成为新的信任汇聚点,需要高可用 |
我的一次踩坑经历
我负责维护的某政务系统采用层次模型,根CA离线存储在保险柜。但有一次中间CA证书过期,连锁导致整条链上所有终端证书都被浏览器标记为“不安全”。那次教训让我深刻意识到:中间CA的生命周期管理比终端证书更关键。现在我的巡检脚本会强制检查CA证书的有效期是否至少还有90天,并且比终端证书长。
选型建议
如果是内部企业PKI,推荐层次模型,便于集中管理和审计。如果是跨组织互认的场景,比如供应链数字证书互认,桥CA模型更合适。网状模型虽然灵活,但运维复杂度高,我个人不推荐轻易尝试。