如果我的 Web 服务器(最新的 Apache)具有有效(未过期或被撤销)的 Verisign 证书链(根 -> 中间 -> 叶/我的服务器),那么服务器发送整个(?) 链到客户端?网页客户端(例如最新的 Chrome)是否需要查找每一个相同的在线证书,特别是如果客户端已经信任根 CA?
如果客户无法联系 Verisign,会发生什么情况?(例如,在没有 WiFi 的笔记本电脑上设置 LAMP)。
答案1
如果你读RFC 5246 第 7.4.2 章你会发现:
certificate_list
这是证书序列(链)。发送者的证书必须位于列表的首位。每个后续证书必须直接认证其前一个证书。由于证书验证要求独立分发根密钥,因此可以从链中省略指定根证书颁发机构的自签名证书,前提是远程端必须已经拥有该证书才能在任何情况下对其进行验证。
解释得很好。服务器是否真的这样做取决于系统管理员的配置方式。许多配置不当的服务器没有执行上述操作,因为许多客户端可以使用 AIA 扩展中提供的 URL 获取其 CA 证书。
许多客户端还会缓存它们收到/下载的证书,以减轻每次链式构建时获取证书的负担。Windows 上的 Chrome 使用 Microsoft 的 CAPI 来管理其证书(与 IE 相同),它会缓存证书。Linux/OSX 上的 Chrome 使用 Mozilla 的 NSS 来管理其证书,它也会缓存证书。因此,如果您在线使用您的网站,则所有高级 CA 证书都可能缓存在您的系统上,并且“离线”将起作用(至少在一段时间内)。
但是,一些 CA 使用 OCSP 进行撤销检查。如果您处于离线状态,则 OCSP 客户端无法联系 OCSP 响应器以获取撤销信息。在这种情况下会发生什么取决于您的客户端软件的配置。默认情况下,大多数浏览器都会“软失败” - 即它们忽略无法联系 OCSP 响应器的事实并假设一切正常。有些可以配置为“硬失败”,如果无法联系 OCSP 响应器,它们将无法通过撤销检查。