2. PKI 体系简介:信任的基石
聊OCSP和CRL切换之前,我觉得有必要先把PKI这个底子打清楚。说白了,PKI就是一套“让互联网上的人和设备互相信任”的机制。你想想看,没有它,你怎么敢放心地给支付宝传密码?
我最早接触PKI,还是十年前做电子政务项目的时候。当时甲方问我要怎么保证证书的安全,我一口气讲了半小时的技术原理,最后被一句话问住了:“那你们怎么知道我发的证书是真的?”——嗯,这个问题,就是PKI要解决的核心。
2.1 公钥基础设施:三个核心角色
PKI里就三个主角:CA、RA、终端实体。咱们一个一个说。
| 角色 | 职责 | 我的理解 |
|---|---|---|
| CA(证书颁发机构) | 签发、吊销证书,是整个信任链的根 | 就像国家的出入境管理局,发护照也吊销护照 |
| RA(注册机构) | 负责审核申请人身份,向CA提交证书请求 | 相当于公安局的户籍科,验证你是不是本人 |
| 终端实体 | 持有证书的个人、服务器或设备 | 就是你我自己,拿着护照去办事 |
这里面有个容易搞混的地方:RA其实是个可选组件。小规模的PKI系统,CA直接自己审核就行。我见过不少初创公司,买了个CA软件就直接签发证书,不做RA分离。结果后来审计的时候,说你们“审核与签发未分离”,被扣了个安全漏洞。
我个人习惯是,只要用户量超过5000,就强制搭建独立的RA模块。原因很简单:出事后你有个明确的问责边界。
2.2 证书链:信任的传递
证书链是怎么形成的?我换一种说法你就懂了。
根CA给自己签个证书,这叫自签名证书。根CA再给下级CA签证书,下级CA再给你签证书。这样就形成了一条链:根证书 → 中级CA证书 → 你的证书。
浏览器怎么验证你的网站证书?它拿你的证书,往上一级找签发者,再往上找,直到找到它预置的根证书。如果全都能对上,信任就建立了。
⚠️ 我踩过的一个坑
曾经有个客户,部署了自建的内部PKI,结果所有浏览器都报“证书无效”。查了两天,发现是网站服务器只发了自己的证书,没发送中级CA证书。客户端只拿到了你的证书,找不到签发人,所以验证失败了。
记住:服务器必须发送完整的证书链,也就是“你的证书 + 所有中间CA证书”,但不要发根证书(客户端本地已经有)。
💡 快速验证证书链是否完整
用这个 OpenSSL 命令就能看到服务器发送了哪些证书:
openssl s_client -connect example.com:443 -showcerts
看输出里有多少个证书块。如果只有一个,那基本就是链不完整,等着报错吧。
2.3 吊销机制:为什么需要它
证书有有效期,那为什么还要吊销?
很简单:证书还没到期,但私钥已经泄密了。或者员工离职了,或者服务器被黑了。这时候必须立刻让这张证书失效。
吊销机制就是干这个的。它有两种实现方式:CRL和OCSP。这也是咱们这门课的核心内容。
我先简单介绍一下两者的区别:
| 特性 | CRL(证书吊销列表) | OCSP(在线证书状态协议) |
|---|---|---|
| 获取方式 | 客户端按周期下载整个列表 | 客户端每次查询单个证书状态 |
| 数据量 | 随时间增长,可能很大 | 小,仅一条结果 |
| 实时性 | 取决于更新间隔(通常是几小时到几天) | 实时查询新 |
| 隐私保护 | 所有人能看到全部吊销信息 | 仅查询单个证书 |
| 服务端负载 | 下载时大,平时几乎无 | 持续有,每次查询都有开销 |
看到这里你可能会问:那为什么不直接用OCSP,又实时又精确?
嗯,有这个问题很正常。我最初也这么想。但后来在实际项目中吃了一次亏——有次给一个拥有10万台终端的客户部署OCSP,结果查询量太大,把OCSP响应器直接打挂了。所有终端都在等响应,业务秒变“死等”。
CRL和OCSP各有各的适用场景。这也是为什么咱们这门课要讲“双模式切换改造”——没有一个模式是银弹。
2.4 PKI核心逻辑:一张图看懂
下面这张图,我画的是PKI体系里最关键的几个模块和它们之间的关系。你盯着看两分钟,整个框架就清楚了。
🔑 核心要记住
- PKI的信任是链式传递的,不是强信任某一方
- 证书链一定要完整发送,别干少发中级CA这种蠢事
- 吊销机制是PKI最后的“紧急刹车”,选CRL还是OCSP要看场景
- RA是可选但推荐的好东西,别省这个钱
2.5 吊销机制在PKI中的角色
你可能会觉得,证书有有效期就够了,为什么要搞吊销这个复杂的东西?
我举个真实例子。2021年,有一个大型互联网金融平台,运维人员离职时带走了服务器的私钥备份。平台在4小时内发现了这个情况,并立即吊销了该证书。如果PKI没有吊销机制,攻击者能用那张证书伪装成该平台,用户的数据和资金都面临风险。
吊销机制在PKI体系里的角色,说白了就两句话:
- 为证书提前“失效”提供途径——不需要等到自然到期
- 保护信任链不被泄密事件破坏——一旦发现危险,立刻切断
我这么多年做PKI项目的经验告诉我:一个没有吊销机制的PKI系统,就是一个半成品。你可以不上线就部署CRL或者OCSP,但你必须留着接口,随时准备启用。
咱们这门课后面讲的CRL和OCSP双模式切换改造,本质上就是让你在“按文件查”和“在线查”之间灵活切换。你把它想象成一个汽车的备胎——平时不一定用得上,但没它你不敢上路。
📌 我给你的建议
刚开始做PKI项目的时候,别想着一次性搞定全套。先把根CA和中级CA跑起来,证书能签发能用。然后再补RA,再上线吊销机制。一步一步来,不会乱。