1. 第1节 PKI基础概念与原理
公钥基础设施(PKI)——说白了就是一套管理密钥和证书的体系。我刚开始接触时,觉得它就是个“证书发放机”,后来踩了几个坑才明白:没有 PKI,安全通信基本是裸奔。
1.1 公钥基础设施定义
PKI 是 Public Key Infrastructure 的缩写。它不是单一软件,而是一套由硬件、软件、人员、策略和流程组成的综合体系。目标就一个:在不可信网络中建立可信身份和加密通道。
我习惯把 PKI 看作“数字世界的身份证系统”。你拿身份证去办事,系统信任发证机关;同样,网站拿证书给浏览器,浏览器信任发证的 CA。这就是 PKI 的根基。
- CA(证书颁发机构)——发证的权威
- RA(注册机构)——核实申请人身份
- 证书库——存放已签发和已吊销的证书
- 密钥对——公钥+私钥,加密与签名的工具
- 数字签名——防篡改、防抵赖的“指纹”
- 信任模型——决定“我该信谁”的规则
1.2 CA 与 RA 的角色分工
很多初学同学把 CA 和 RA 混为一谈。其实它们是两码事。
CA(Certificate Authority) 是签发证书的最终决策者。它用自己的私钥给证书打上“官方认证”印章。一旦私钥泄露,整个信任链就完蛋——所以生产环境中 CA 必须物理隔离、脱机存储。
RA(Registration Authority) 是替 CA 跑腿的。它负责验证申请人身份、收集证书请求、检查资料是否合规。RA 没有签发证书的权力,但能大大减轻 CA 的负载,尤其在大型企业里,RA 可以部署多个地域。
我建议你思考一个问题:如果你的 PKI 需要支持 10 万用户,每天签发 500 张证书,RA 需要几个节点?CA 需要冷备还是热备?答案会影响到整个集群设计。
1.3 密钥对与证书
密钥对是 PKI 的原子单位。公钥公开,私钥保密。证书就是把公钥和身份信息绑定在一起的“包装纸”,并由 CA 对这张包装纸签字。
| 概念 | 私钥 | 公钥 | 证书 |
|---|---|---|---|
| 存储位置 | 用户自己(或 HSM) | 公开 | 公开(证书库) |
| 用途 | 签名、解密 | 验签、加密 | 证明公钥归属 |
| 泄露后果 | 身份被盗、加密失效 | 无直接影响 | 被吊销、信任断裂 |
证书格式最常见的是 X.509 v3。里面包含:版本、序列号、签名算法、颁发者、有效期、主体、公钥、扩展项。你想想看,浏览器凭什么相信一个证书?就靠后面这个签名和信任链。
# 一条简单的自签名证书生成命令(仅供测试)
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
我在项目中见过不少工程师直接拿这条命令的产物上生产。明明可以用 CA 签发,偏要自签名,结果业务系统之间互相不认,排查一整天。嗯,这里要注意:自签名证书只适合开发环境,生产环境必须有完整的 CA 体系。
1.4 数字签名
数字签名不是“画个图”,而是用私钥对数据的哈希值做加密。验证方用公钥解密哈希,再和原始数据的哈希比对——一样则证明数据未被篡改且来自私钥持有者。
我习惯把签名比作“密封条 + 指纹”。快递盒子上贴个密封条,撕破就暴露;但签名还加了一层——只有发件人私钥才能产生这个“指纹”。接收方哪怕有千万人,只要用你的公钥能验过,就认是你的。
1.5 信任模型
信任模型解决的是“我该信谁”的问题。最常用的是层次信任模型:根 CA → 中间 CA → 终端证书。浏览器预先装了根证书列表(比如 Mozilla 的根证书库),只要链上每个证书都没过期、没吊销,浏览器就信任。
另一种是交叉信任模型,常见于企业并购或联邦身份场景。两个 CA 互相交换根证书,让对方的证书链也能被己方识别。我前几年帮一家银行和保险公司做互信集成,就是因为两套 PKI 各自独立,最后通过交叉认证打通了证书验证。
- 层次模型:根 CA 权威最高,树状结构,管理清晰,但根 CA 一旦泄露全链崩溃。
- 网状模型:各 CA 交叉互信,灵活但复杂度高,不适合大规模部署。
- 桥 CA 模型:用一个桥 CA 连接多个独立 PKI 域,适合异构多组织环境。
我建议在设计高可用 PKI 集群前,先确定信任模型。这会影响 CA 的部署数量、证书链长度、以及后续的 CRL/OCSP 策略。
这套图我画了很多次才精简到现在这样。每次培训我都会指着“信任模型”那块反复讲:根 CA 的安全就是 PKI 的生命线。如果根 CA 失守,所有下游证书瞬间变成废纸。所以高可用 PKI 集群的第一课:先保护好你的根。
以上就是 PKI 基础概念的核心内容。记住这些,后面讲集群部署时你才不会懵。