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 的核心角色和流程串起来。你看完应该就清楚了。

PKI 核心架构与证书链验证流程 根 CA (信任锚) 中间 CA 终端实体证书 签发 签发 验证方向 从终端证书开始 逐级向上验证签名 直到找到信任的根证书 向上追溯 信任存储 操作系统或浏览器 预置了受信任的根证书 国密根证书需手动导入 信任锚点

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 的本质是信任的传递,而证书链就是这条信任路径的载体。