14

假设有一个如下所示的 PKI 层次结构。

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

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

由于 user-1 和 user-2 可以相互认证,如果 user-2 的证书被 inter-2 吊销,inter-2 应该让 root 知道,然后传播给 inter-1 和 user-1,对吗?

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

4

1 回答 1

21

不,证书的吊销不会在 CA 树中传播。每个 CA(在您的情况下为根和中间)负责发布 CRL,其中仅包含由该 CA 颁发的已撤销证书的列表。

一个例子:

根 CA 为根 CA 颁发的证书发布 CRL:inter-1 CA 和 inter-2 CA。根 CA 不知道用户 1 和用户 2 证书或其吊销状态。

inter-1 CA (resp inter-2 CA) 发布一个 CRL,其中包含由 inter-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

如果 user-1 证书被吊销,这个证书(实际上是它的序列号)只会出现在 inter-1 CA 发布的 CRL 中。

当有人想检查 user-1 证书的有效性时,过程如下:

  1. 在证书和可信 CA 之间建立证书链:user-1 / inter-1 CA / root CA
  2. 获取列表中第一个证书的 CRL
  3. 验证 CRL 的签名
  4. 对照此 CRL 检查列表中第一个证书的状态
  5. 如果状态未被撤销,则从列表中删除证书并转到 2。否则失败
  6. 如果列表仅包含受信任的 CA,请检查证书的签名链(证书必须由列表中的以下证书签名)
  7. 如果所有签名都已检查且有效,则 user-1 证书有效。

请注意,验证 CRL 签名可以触发另一个证书链的验证:即该算法可以是递归的。实际上 X.509 证书验证算法是(非常)复杂的,我这里只是总结一下原理。

于 2013-11-14T11:57:26.087 回答