第一章 证书基础概念:X.509、PKI 与信任模型
做证书生命周期管理审计,你得先搞清楚证书到底是什么东西。我刚开始接触 PKI 的时候,被一堆术语搞得头大——X.509、CA、CRL、信任锚……说白了,数字证书就是你在网络世界里的「身份证」,而 X.509 就是这张身份证的格式标准。这一章我们把地基打牢,后面审计才能看出门道。
1.1 X.509 标准——证书的「身份证模板」
X.509 是 ITU-T 和 ISO 联合定义的一个公开密钥证书格式标准。目前最常见的是 X.509 v3 版本,引入了扩展项,比如密钥用法、基本约束、主题备用名称等。我个人习惯把证书字段分成三大块:主体信息、公钥信息和签发者信息。
下面这张表罗列了证书里最关键的几个字段,审计时你会反复跟它们打交道:
| 字段 | 说明 | 审计关注点 |
|---|---|---|
| 版本号 (Version) | v1/v2/v3,目前几乎都是 v3 | 是否使用过时版本? |
| 序列号 (Serial Number) | CA 颁发的唯一整数 | 序列号是否重复?是否可预测? |
| 签名算法 (Signature Algorithm) | 如 SHA256withRSA、ECDSA | 算法强度是否合规? |
| 颁发者 (Issuer) | 签发该证书的 CA 的 DN | DN 是否与 CA 证书匹配? |
| 有效期 (Validity) | notBefore 和 notAfter | 是否已过期?是否超长有效期? |
| 主体 (Subject) | 证书持有者的 DN | 是否存在通配符滥用? |
| 公钥 (Subject Public Key Info) | 算法 + 公钥值 | 密钥长度是否足够? |
| 扩展项 (Extensions) | v3 引入,如 BasicConstraints、KeyUsage | CA 标志是否正确设置? |
我记得有一次审计客户的内部 CA,发现他们还在用 SHA1 签名算法。虽然系统能跑,但 SHA1 早在 2017 年就被业界宣布不再安全。你想想看,一个根 CA 用 SHA1 签发的证书链,整个信任基础都是脆的。这就是为什么要仔细检查签名算法字段。
1.2 PKI 核心组件——谁在干活?
PKI 不是单个软件,而是一套基础设施。我用一个简单的角色分工来理解它:
- 证书颁发机构(CA)——签发和吊销证书的权威。自签名根 CA 或受信任的第三方。
- 注册机构(RA)——负责验证申请者身份,但不能直接签发证书。我把 RA 看作「前台接待」,CA 是「制证中心」。
- 证书吊销列表(CRL)——CA 定期发布的已吊销证书清单。审计时 CRL 的发布频率和签名有效性是硬指标。
- 证书存储库(Repository)——存放证书和 CRL 的地方,通常用 LDAP 或 HTTP。
- 终端实体(End Entity)——最终使用证书的用户、服务器或设备。
这里有个常见的坑:很多人以为 RA 可有可无。我曾经在一个金融项目里看到,客户直接让 CA 接受所有证书请求,结果有人冒用了 CEO 的邮箱申请了一个服务器证书。后来加了 RA 的人工审核环节,才堵住这个漏洞。
1.3 数字证书的四大作用
数字证书不是仅用来加密的。我习惯把它的作用归纳为四个:
- 身份认证——通过证书链验证对方确实是证书主体。比如你访问银行网站,浏览器会检查服务器证书是否由受信任 CA 签发。
- 数据加密——用证书里的公钥加密对称密钥,只有对应的私钥能解开。HTTPS 的握手阶段就是干这事。
- 数字签名——用私钥对数据摘要签名,对方用公钥验证签名的完整性和不可抵赖性。代码签名证书就是典型应用。
- 密钥协商——在 TLS 等协议中,证书携带的密钥对用于建立共享秘密。
你想想看,如果只把证书理解成「密码本」,那审计的时候很容易漏掉签名验证是否完整、证书链是否全部信任这些关键点。
1.4 信任模型——谁信谁?怎么信?
信任模型解决的核心问题是:一个终端实体证书到底该不该被信任?最常见的三种模型:
- 层次模型(Hierarchical)——一个根 CA 签下所有下级 CA,形成树状结构。简洁、容易审计,但根 CA 一旦失陷全盘皆输。
- 网状模型(Mesh)——多个 CA 互相交叉签名,适合组织间互信。但审计路径可能非常复杂。
- 桥 CA 模型(Bridge CA)——设置一个中间 CA 来连接不同 PKI 域,企业合并或政府互联常见。
我画了一张层次信任模型的流程简图,后面审计证书链时会反复用到这个思路:
图中箭头代表签发信任关系。审计证书链时,你就是沿着这个箭头反向验证——从终端证书往上回溯,直到自签名的根证书。我曾经碰到过一个案例:中间 CA 的证书里没有设置 BasicConstraints 扩展的 CA 标志为 true,结果链断掉了,浏览器报「证书不受信任」。这种低级错误在审计中很常见。
好了,这一章的基础概念就讲到这里。记住 X.509 字段、PKI 组件、证书的四个作用,以及信任模型的基本结构,后面做证书生命周期审计时,你会发现自己能快速定位问题在哪一环。