摘要
- RFC 5217 设定了一个明确场景:PKI2 同时加入两个 PKI 域,因此 PKI1 可以经由 PKI2 构造到 PKI3 的证书路径;但 PKI1 与 PKI3 并不共同属于域 1,所以按域 1 的策略验证时必须失败。
- 跨证书与桥接 CA 证明路径可以连接。是否接受还取决于信任锚、策略映射、名称与策略约束、域成员状态、吊销信息,以及依赖方针对具体用途完成的验证。可达性不能替代授权。
被拒绝的完整链条
审计员看到的不是残缺数据。链上的证书一个不少,签名逐级成立,起点正是应用配置的信任锚,终点也是目标订户证书。系统仍然写下“验证失败”。
如果把失败率当作唯一质量指标,这条记录很容易被归入兼容性问题。RFC 5217 却说明,它可能是边界正常工作的证据。
规范中的 PKI2 同时属于域 1 和域 2。PKI1 到 PKI2 有路径,PKI2 到 PKI3 也有路径,因此路径构造器能把两段接起来。但 PKI1 和 PKI3 没有共同的域 1 成员关系。请求按域 1 策略验证时,这条路径不得成功。
证书图回答了“能否连起来”。策略回答的是“谁授权把这条连接用于当前决定”。
构造路径只是发现候选
证书路径构造从某个信任锚出发,寻找一组有序证书抵达终端实体。验证则拿着这组候选,处理策略、名称约束、用途、时间和吊销状态。两步可以由同一套软件连续完成,却不能因此合并成一个事实。
桥接和网状架构扩大了搜索范围,也能减少每两个域之间单独签发跨证书的成本。这些收益只说明远端签发者变得可达,不说明所有应用都应当接受远端证书。
RFC 5217 要求每个 PKI 保留自己的证书策略 OID 和主 CA。它与外部 PKI 建立关系之前,要审阅对方的策略和治理文件,决定可接受的信任程度并做策略映射。跨证书把这个有限关系技术化;它没有把不同制度合并,也没有把所有保证等级视为等价。
双重成员制造了侧门
最值得警惕的不是一条错误链,而是一条过于容易构造的正确链。PKI2 同时连接两个域,算法因此看见了从域 1 进入域 2 的通道。若边界没有写入签名约束,路径发现可能把局部信任扩展成从未被批准的跨域信任。
RFC 5217 把防线放进跨证书:策略映射、策略约束和名称约束应明确排除域外路径。一个域若希望某项限制可靠生效,就不应只寄望所有依赖方恰好配置了同样的本地规则。
成员关系变化也不是通讯录更新。某个 PKI 新增或退出另一个域,会改变可构造的路径集合。它必须通知相关域;相关域必须重新审查跨证书约束。若允许或禁止的路径发生变化,就要吊销旧跨证书并签发写有正确边界的新证书。
签名能固定一份声明,不能让声明所描述的世界停止变化。
有效签名不能替代策略处理
这里最容易出现的误判,是把密码学真实性扩大成业务适用性。跨证书的签名可以证明某个 CA 确实签发了其中的策略映射和约束,也可以防止这些字段在传输中被无痕篡改。但签名不会自动选择依赖方的初始策略集合,不会替应用决定证书适合登录、签约还是代码签名,也不会证明吊销信息在决策时足够新鲜。
RFC 5217 提醒,域若希望限制可靠生效,就要把限制明确放入跨证书,而不是把希望寄托在依赖方的验证策略上。反过来也同样成立:依赖方不能因为跨证书“看起来正式”,就跳过自己的策略输入。签名回答“谁作出了这项声明”;验证回答“这项声明在当前目的下是否足够”。
这也解释了为何拒绝原因必须具体。no path、policy mismatch、name constraint、revocation unavailable 和 untrusted anchor 代表完全不同的控制状态。若它们在运营面板里都变成“证书错误”,组织就无法区分连接故障、权限边界和证据缺失,更无法判断应该修复路径还是保留拒绝。
Bridge CA 不是所有人的根
桥接模式用一个 Bridge CA 管理跨证书,降低多域互操作所需的双边关系数量。RFC 5217 同时划出硬边界:桥接 CA 不得成为任何参与域的信任锚,不应签发普通终端实体证书,并应以中立方式、用自己的域策略 OID 完成映射。
这个设计拒绝把“处在中心”偷换成“拥有最高权力”。依赖方仍从本域选择的信任锚出发。路径经过桥接点时,双方的映射和约束仍要被验证。桥可以降低协调成本,却无权替每个参与者定义风险偏好。
信任列表暴露真正的决策者
本地信任列表由单个依赖方维护,可以直接放入多个信任锚,不必先建立复杂跨认证。代价是每个依赖方都要独立更新。Trust Authority 则为多个依赖方维护共同列表,把管理集中起来。
集中不等于免除判断。把某个 PKI 加入列表之前,依赖方或 Trust Authority 要审查其策略、保证程度、对依赖方提出的义务、所提供的担保,以及吊销或密钥失陷通知;之后还要持续复核。如果不愿继承该 PKI 对其他域成员的信任,必须抑制策略映射。
因此,信任列表不是无害配置文件。加入一个 CA 会使原本被拒绝的证书获得入口;移除一个 CA 可能造成服务拒绝。谁修改、为何修改、影响哪些用途,都必须可追溯。
留下“接受权限回执”
重大依赖不能只保存最终证书链。回执应绑定依赖方与应用、决策时间、验证引擎版本、信任锚指纹及安装来源、目标 PKI 域、用途和初始策略集合。
还应保存准确的候选路径、逐跳处理的策略映射和名称约束、域成员快照、跨证书签发与吊销状态、信任列表或 Trust Authority 版本、CRL 或 OCSP 数据的新鲜度、最终结果、具体拒绝原因,以及应用随后允许或拒绝的动作。
被正确拒绝的链也应保留。它证明系统看见了一条技术通路,却没有让通路越权成为信任。
回执还应能回答一个容易被忽略的问题:同一条链若在不同应用中得到不同结果,差异来自哪一项输入。若答案只能靠临时重演,证据就会随着信任列表、域成员关系或吊销缓存的下一次更新而消失。保存决策快照,才能把当时的授权边界与后来的配置状态分开。
这篇文章没有声称什么
RFC 5217 是信息性备忘录,也承认多域互操作还有其他实现方式。同一条路径在另一信任锚、用途或社群策略下可能成立。这里不指控任何具体 CA、桥接服务或产品存在缺陷。
结论更窄,也更可执行:签名有效、路径存在、属于某个域、被某个应用接受,是四种证据。把它们压成一个绿色状态,才会让接口凭空创造权力。
来源
- RFC 5217:多域公钥基础设施互操作备忘录
- RFC 5280:X.509 证书与 CRL 配置
- RFC 4158:证书路径构造
- RFC 3647:证书策略与认证实践框架
- Lu Heng:运行代码优先
补充标准记录
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
