A
/ \
B C
| |
D E
当E(或C)验证D的证书时,他也需要信任B. 有没有办法避免必须明确地将B的证书添加到E的CA商店?
使用openssl,有没有办法从客户端或其他来源(可能像D证书中的issuerDistributionPoint这样的字段)自动检索B的证书?
答案 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衍生物)这样做。