跳到主要内容
ecdsa.com

证书路径验证

RFC 5280 §6 定义的算法,用于判断从信任锚到终端实体证书的链是否有效,检查签名、有效期、名称、约束、策略和吊销状态。
其他写法path validationchain validationcertificate verificationpath building

从信任锚开始向下,验证器对每张证书检查:签名能用颁发者的密钥验证通过;当前时间位于 notBefore 与 notAfter 之间;颁发者名称与上一张证书的主体一致;证书未被吊销;basicConstraints 和密钥用法允许签发证书;名称约束得到遵守;所有关键扩展都能被识别。策略处理还会增加证书策略检查,但很少有应用使用。随后,应用程序还要根据它想要连接的名称(RFC 9525)以及所需的扩展密钥用法检查终端实体证书。

路径构建在先:存在交叉签名和多个中间证书时,客户端必须搜索任意一条终止于受信任根证书的路径,而各个库的搜索能力参差不齐。许多跨库的 TLS 故障其实是路径构建失败,而不是验证失败。

应使用平台的验证器或持续维护的库,而不是手写检查;缺少基本约束或 EKU 检查,已经是许多证书伪造事件的根本原因。

标准与参考资料

全部术语