证书撤销如何与中间CA一起使用?

时间:2013-11-13 18:55:41

标签: ssl openssl ssl-certificate x509certificate certificate-revocation

假设PKI层次结构如下所示。

root CA ==> inter-1 CA ==> user-1
  \
   \======> inter-2 CA ==> user-2

我的问题是:root CA是否还需要定期从其子代下载CRL:inter-1和inter-2?

由于user-1和user-2可以相互认证,如果inter-2撤销了user-2的证书,则inter-2应该让root知道然后传播到inter-1和user-1,对吗? / p>

如果是这样,那似乎相当复杂。是否有任何工具可用于管理撤销逻辑?非常感谢。

1 个答案:

答案 0 :(得分:18)

不,证书的撤销不会通过CA树传播。每个CA(您的案例中的根和中间)负责发布CRL,其中包含仅此CA颁发的已撤销证书的列表。

一个例子:

Root CA为根CA颁发的证书发布CRL:inter-1 CA和inter-2 CA.根CA不知道user-1和user-2证书或其撤销状态。

inter-1 CA(resp inter-2 CA)发布一个CRL,其中包含由1个CA(resp inter-2 CA)颁发的已撤销证书列表,并且只发布这些证书。

CRL Root CA   CRL inter-1 CA 
  ^             ^
  |             |
root CA ==> inter-1 CA ==> user-1
  |
  |           CRL inter-2 CA 
  |             ^
  \             |
   \======> inter-2 CA ==> user-2

如果撤销用户1证书,则此证书(实际上是其序列号)将仅出现在由1个CA发布的CRL中。

当有人想要检查用户1证书的有效性时,该过程如下:

  1. 在证书与受信任的CA之间构建证书链:user-1 / inter-1 CA / root CA
  2. 获取列表中第一个证书的CRL
  3. 验证CRL的签名
  4. 根据此CRL检查列表中第一个证书的状态
  5. 如果状态未被撤销,请从列表中删除证书,然后转到2.否则失败
  6. 如果列表仅包含受信任的CA,请检查证书的签名链(证书必须由列表中的以下证书签名)
  7. 如果所有签名都已经过检查且有效,则用户1证书有效。
  8. 请注意,验证CRL签名可以触发另一个证书链的验证:即此算法可以是递归的。实际上,X.509证书验证算法非常复杂,我只是总结了这里的原理。