3. PKI体系结构深入
PKI(公钥基础设施)并不是“一台签发证书的服务器”,而是一套由角色、组件、策略与协议共同构成的信任生产与消费体系。要真正理解PKI,需要把“谁有权签、谁负责审、证书放在哪里、如何知道证书是否被吊销、依据什么规则签发、信任如何传递”这几件事串成一条完整的链路。本节围绕CA、RA、证书库、CRL、OCSP、证书策略与CP/CPS,以及信任链与交叉认证模型展开。
一、核心角色与组件
CA(Certification Authority,认证机构)是信任的锚点,负责签发、更新、吊销证书,并用私钥对证书签名。CA的私钥是整个体系中最敏感的资产,通常存放在HSM(硬件安全模块)中,以“密钥不出硬件”的方式完成签名。CA分为根CA与下级CA:根CA自签名,长期离线保存;下级CA由上级签发,承担日常签发任务,从而缩小根密钥暴露面。
RA(Registration Authority,注册机构)是CA的“前台”,负责身份核验、申请受理、资料审核与吊销请求的初审。RA不持有签发私钥,只把审核结论提交给CA。这样做的意义在于:把高频、面向用户的身份审核与低频、高敏感的签名操作分离,既提升效率,也降低密钥风险。
证书库(Repository)是证书与吊销信息的发布点,常见形式包括LDAP目录、HTTP文件服务、数据库等。证书库需要保证可查询、可缓存、可高并发访问,因为客户端在验证证书时会频繁读取。
CRL(Certificate Revocation List,证书吊销列表)是由CA定期签发的吊销清单,包含被吊销证书的序列号、吊销时间与原因。CRL的优点是实现简单、可离线校验;缺点是列表会越来越大、更新有延迟。
OCSP(Online Certificate Status Protocol,在线证书状态协议)提供实时查询能力:客户端把证书序列号发给OCSP响应器,响应器返回“good / revoked / unknown”。OCSP解决了CRL体积与延迟问题,但引入了在线依赖与隐私问题,因此又出现了OCSP Stapling——由服务器在TLS握手时携带已签名的OCSP响应,减少客户端直连。
二、证书策略与CP/CPS
证书策略(Certificate Policy,CP)回答“这张证书适用于什么场景、遵循什么安全要求”。例如,某策略规定仅用于内部员工身份认证,另一策略规定用于服务器TLS。CP通常以OID标识,并写入证书的Certificate Policies扩展中。
CPS(Certification Practice Statement,认证业务声明)是CA对外公开的“操作说明书”,描述密钥生成、身份验证、证书生命周期、审计、灾备等具体做法。CP偏“要求”,CPS偏“实现”。二者共同构成CA可信度的依据,也是审计与合规检查的入口。
三、信任链与交叉认证模型
信任链(Chain of Trust)是验证的核心:终端实体证书 → 中间CA证书 → 根CA证书。验证时,客户端从终端证书出发,逐级用上级公钥验证下级签名,直到命中本地信任库中的根。每一级都要检查有效期、密钥用法、基本约束(Basic Constraints)、路径长度以及吊销状态。
交叉认证(Cross-Certification)用于打通两个独立PKI域。常见模型有三种:
- 层级模型:两个根互相签发交叉证书,形成双向信任,适合对等合作。
- 桥CA模型:设立一个桥CA,各域根与桥CA交叉认证,桥CA不直接签发终端证书,只做信任中转,扩展性好。
- 信任锚模型:客户端直接信任对方根,不建立交叉证书,简单但信任管理分散。
交叉认证的关键风险是“路径爆炸”与“策略映射”。当多个域互相交叉时,验证路径可能急剧增多,必须通过策略约束、名称约束和路径长度限制来控制。
四、实际验证过程与判断依据
以一次TLS握手为例,客户端拿到服务器证书后,验证顺序通常是:
- 用中间CA公钥验证服务器证书签名;
- 用根CA公钥验证中间CA证书签名,直到命中信任库;
- 检查每级证书的有效期、Basic Constraints(CA:TRUE)、Key Usage(keyCertSign)、路径长度;
- 检查服务器证书的SAN是否匹配访问域名;
- 查询CRL或OCSP,确认未被吊销;
- 检查Certificate Policies是否满足本地策略要求。
任何一步失败,验证即终止。实际排障中,最常见的失败原因是“中间证书未下发”“OCSP响应过期”“根证书未在信任库中”以及“策略OID不匹配”。
五、CP/CPS与交叉认证的工程要点
在工程落地时,CP/CPS不是“写完就归档”的文档,而应作为配置基线:证书模板中的策略OID、密钥用法、有效期、CRL发布周期、OCSP响应器地址,都应与CPS中的描述一致。交叉认证时,必须明确策略映射规则——对方域的“服务器认证策略”映射到本域哪个策略,是否允许名称约束,路径长度如何限制。否则,一个宽松的对方CA可能通过交叉路径签发本域不认可的证书,造成信任越界。
总结来看,PKI的可靠性来自“角色分离 + 策略约束 + 状态可查 + 路径可控”。CA与RA分离降低密钥风险,证书库与CRL/OCSP保证状态可见,CP/CPS提供规则依据,信任链与交叉认证模型决定信任如何传递与收敛。理解这四层关系,才能在工程中设计出既可用又可控的PKI体系。