PKI 体系基础:公钥基础设施、X.509 与信任模型
好,我们正式开始第二讲。这一章是后面所有 SM2 证书配置的基石。说白了,你要是不理解 PKI 和 X.509,后面配置国密证书的时候,很容易踩坑。我个人习惯,在讲任何技术细节之前,先把这个大框架搭起来。
2.1 公钥基础设施(PKI)到底是什么?
PKI,全称 Public Key Infrastructure。你把它想象成一个「数字世界的身份证系统」就行。
现实里,我们靠公安局发身份证。数字世界里,谁负责发、谁负责管、谁负责验证?就是 PKI。它不是一个单一软件,而是一整套硬件、软件、人员、策略和流程的组合。
PKI 的核心目标就三个:
- 身份认证:证明「你是你」。
- 数据加密:只有指定的人能看。
- 数字签名:证明「你没赖账」。
我记得刚入行时,有个老工程师跟我说:「PKI 就是信任的传递。」当时不太懂,后来做项目多了,才明白这句话的分量。
2.2 数字证书标准:X.509
PKI 里最核心的载体是什么?就是数字证书。而 X.509 就是定义这个证书长什么样的国际标准。目前主流的是 X.509 v3 版本。
一个 X.509 证书,说白了就是一个结构化的数据文件。我拆开给你看:
| 字段 | 说明 | 我的一点经验 |
|---|---|---|
| 版本号 (Version) | v1, v2, v3 | 现在基本都用 v3,支持扩展项 |
| 序列号 (Serial Number) | CA 分配的唯一编号 | 吊销证书时全靠它定位 |
| 签名算法 (Signature Algorithm) | 如 SM2-with-SM3 | 国密证书这里就是 SM2 |
| 颁发者 (Issuer) | 签发该证书的 CA 名称 | 也就是「谁给你发的证」 |
| 有效期 (Validity) | 开始和结束时间 | 注意时区问题,我吃过亏 |
| 主体 (Subject) | 证书持有者名称 | 也就是「你是谁」 |
| 公钥 (Public Key) | 持有者的公钥信息 | SM2 公钥长度是 64 字节 |
| 扩展项 (Extensions) | v3 新增的灵活区域 | 密钥用法、CA 标志都在这里 |
一个小技巧: 查看证书内容,Linux 下用 openssl x509 -in cert.pem -text -noout。国密证书也一样,只是算法标识变成了 SM2。
2.3 证书链与信任模型
你想想看,如果全世界只有一个 CA 给所有人发证书,那这个 CA 得累死,而且一旦它被攻破,整个体系就崩了。所以实际 PKI 用的是分层结构。
2.3.1 什么是证书链?
证书链,就是从终端实体证书到根证书的一条信任路径。中间可能经过多个中间 CA。
举个例子:
- 根 CA:自签名,信任锚点。它给自己发证。
- 中间 CA:由根 CA 签发,负责给下级或终端用户发证。
- 终端证书:你服务器上用的那个,由中间 CA 签发。
验证的时候,系统会从你的证书开始,一级一级往上找,直到找到一个它信任的根证书。这个过程,我称之为「向上追溯,直到信任」。
避坑指南: 我曾经在配置 HTTPS 时,只部署了终端证书,忘了把中间 CA 证书一起部署。结果 Chrome 报错「证书链不完整」。记住,服务器必须把整条链(除了根)都发给客户端。
2.3.2 信任模型
常见的信任模型有几种,我挑两个最常用的说说:
| 模型 | 特点 | 适用场景 |
|---|---|---|
| 层次模型 (Hierarchical) | 树状结构,根 CA 是唯一信任锚 | 企业内部 PKI、公共 CA |
| 网状模型 (Mesh) | 多个 CA 互相交叉认证 | 联盟组织、跨域互信 |
国密 PKI 体系,我个人更推荐层次模型。结构清晰,管理方便,吊销路径也短。你想想看,如果搞成网状,交叉认证多了,证书链长度和验证复杂度都会爆炸。
2.4 核心逻辑:一张图看懂 PKI
嗯,这里我画了一张图,把 PKI 的核心角色和流程串起来。你看完应该就清楚了。
2.5 国密 PKI 的特殊之处
讲完通用的,咱们得聊聊国密。SM2 证书在 PKI 体系里,有几个地方跟国际算法不一样:
- 算法标识:X.509 证书里的签名算法字段,国际上是 SHA256-RSA,国密是 SM3-SM2。
- 密钥长度:SM2 公钥是 64 字节(未压缩),RSA 2048 是 256 字节。证书体积更小。
- 根证书分发:国际根证书预置在操作系统里。国密根证书目前需要企业自己部署或从国密局获取。
- 证书策略:国密标准(GM/T 0015)对证书策略扩展项有专门要求,跟 RFC 5280 不完全一样。
我的建议: 做国密 PKI 项目,别直接拿 OpenSSL 的默认配置用。一定要看 GM/T 0015-2012《基于 SM2 密码算法的数字证书格式》这个标准。我当年就是没仔细看,结果证书扩展项写错了,导致验签失败。
2.6 小结一下
这一章我们讲了 PKI 是啥、X.509 证书长什么样、证书链怎么搭、信任模型怎么选。这些都是后面配置 SM2 证书的「内功」。你把这些概念吃透了,后面操作起来就会顺手很多。
记住一句话:PKI 的本质是信任的传递,而证书链就是这条信任路径的载体。