Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssl 证书吊销如何与中间CA';s_Ssl_Openssl_Ssl Certificate_X509certificate_Certificate Revocation - Fatal编程技术网

Ssl 证书吊销如何与中间CA';s

Ssl 证书吊销如何与中间CA';s,ssl,openssl,ssl-certificate,x509certificate,certificate-revocation,Ssl,Openssl,Ssl Certificate,X509certificate,Certificate Revocation,假设PKI层次结构如下所示 root CA ==> inter-1 CA ==> user-1 \ \======> inter-2 CA ==> user-2 我的问题是:根CA是否也需要定期从其子级inter-1和inter-2下载CRL 由于user-1和user-2可以相互验证,如果user-2的证书被inter-2吊销,inter-2应该让root知道,然后传播到inter-1和user-1,对吗 如果是这样的话,它似乎相当复杂。是否有任何工具可用于

假设PKI层次结构如下所示

root CA ==> inter-1 CA ==> user-1
  \
   \======> inter-2 CA ==> user-2
我的问题是:根CA是否也需要定期从其子级inter-1和inter-2下载CRL

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


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

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

例如:

根CA为根CA颁发的证书发布CRL:inter-1 CA和inter-2 CA。根CA不知道user-1和user-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
如果用户1证书被吊销,此证书(实际上是其序列号)将仅出现在inter-1 CA发布的CRL中

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

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

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

    JCS,你能给我一个精确的参考(RFC/章)吗?你是在哪里找到这个用于验证信任链的算法的?我在任何地方都找不到它。@Gab看看RFC 5280,第6节“认证路径验证”@JCS是的,这是我知道的同一个RFC。该部分描述了如何构建认证路径。但我仍然找不到任何地方,链中的每个证书都必须根据其crl进行验证。你的算法是合理的,但我真的很想找到它。另外,crl中撤销证书的一个可能原因是“caCompromise”。这真的让我很困惑。@Gab也许我没有完全理解你的问题,但这一部分不仅仅是路径构建,因为验证是路径构建的一部分,因为algo的结果应该是“有效”路径。例如,第6.1.3节描述了证书验证过程,更具体地说是:“[验证]当前未撤销证书。这可以通过获得适当的CRL(第6.3节)、状态信息或带外机制来确定。”此外,第6.3节描述了CRLvalidation@JCS经过深思熟虑,我认为你的答案是正确的。没有参考您在RFC5280中解释的算法,但我们可以从规范中推断出的规则是:如果证书具有必须根据CRL进行验证的CDP。你的算法就是这样做的。此外,您不能只验证用户证书的CRL(如果CA私钥被泄露,则用户证书可能是伪造的)+我对你的答案有信心。