为什么不信任有效的中间x509证书?

时间:2016-04-08 18:36:25

标签: ssl openssl certificate x509

   A
  / \
 B   C
 |   |
 D   E

当E(或C)验证D的证书时,他也需要信任B. 有没有办法避免必须明确地将B的证书添加到E的CA商店?

使用openssl,有没有办法从客户端或其他来源(可能像D证书中的issuerDistributionPoint这样的字段)自动检索B的证书?

1 个答案:

答案 0 :(得分:2)

  

有没有办法避免将B&C的证书明确添加到E的CA商店?

常见的方法是在TLS握手内发送所有中间证书和叶证书。例如,如果您连接到google.com,则会在TLS握手中获得服务器提供的以下证书链:

 0 s:/C=US/ST=California/L=Mountain View/O=Google Inc/CN=*.google.com
 1 s:/C=US/O=Google Inc/CN=Google Internet Authority G2
 2 s:/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA

使用中间证书(1,2),客户端可以构建从叶证书(0)到本地存储的可信CA(在这种情况下为/C=US/O=Equifax/OU=Equifax Secure Certificate Authority)的信任链。

当然,您也可以将中间证书添加为客户端中的受信任证书。但是,由于还有很多东西比受信任的根证书更频繁地更改,因此您需要更多内存,但您也会定期使用新的中间证书更新您的客户端。

  

使用openssl,有没有办法从客户端或其他来源(可能是像D&#39证书中的issuerDistributionPoint这样的字段)自动检索B&#cert;?

openssl没有提供具体的工具来处理这个问题。桌面浏览器Google Chrome实际上会尝试从互联网上下载丢失的中间证书,可能是基于证书的“授权信息访问”部分中的信息。但我不知道其他浏览器(除了像Opera这样的其他Chromium衍生物)这样做。