证书链的构建和验证
候选链的构建
使用DFS算法进行候选链构建,算法调用者每次从DFS算法中拿一条候选链,可以选择接受或者拒绝。如果拒绝则可以尝试从DFS算法中拿取下一条链。
DFS算法在构建证书链时会使用快速验证和签名验证(边构建边验证)。当某个上级证书在通过快速验证以后,DFS算法还会用这个证书的公钥来验证当前证书的签名。
候选链的吊销验证
DFS算法提供了一条候选链,我们从trust anchor的下级证书开始验证吊销状态;验证时使用本地或者ocsp请求验证。
当整条链都通过吊销验证。则表示最开始的目标证书值得信任。如果出现吊销验证不通过的情况,则根据策略选择尝试从DFS算法中获取下一条候选链,然后再次进行从上到下的吊销验证, 或者终止整个证书验证流程。
rfc与实践的区别
证书签名验证时机
- rfc规定候在构建候选链时只需要让其通过快速验证,构建好以后在对候选链进行证书签名验证
- 实践中当即将要选定当前尝试的候选上级证书时,需要用其的公钥来验证当前证书的签名
证书链吊销验证方向
- rfc规定从trust anchor的下一级证书开始向下验证吊销状态
- 实践中可能会出现从底部开始依次向上验证吊销状态的情况
总结
当验证某个证书是否可信时:
- 在构建阶段对其所在的候选链进行快速验证/签名验证
- 验证其所在候选链的吊销状态