Web服务器是否将证书链发送给Web客户端?

如果我的Web服务器(最新的Apache)有一个有效的(未过期或撤销的)Verisign证书链(root-> intermediate-> leaf / myserver),那么服务器是否整个(?)链发送给客户端? Web客户端(例如最新的Chrome) 是否需要在线查找每个相同的证书,特别是如果客户端已经信任根CA?

如果客户无法联系Verisign,会发生什么情况? (例如,在没有WiFi的笔记本电脑上安装LAMP)。

如果你阅读RFC 5246章7.4.2,你会发现:

certificate_list
这是证书的一个序列(链)。 发送者的证书必须在列表中首先出现。 以下每个证书都必须直接certificate前面的证书。 由于证书validation要求根密钥是独立分发的,因此假定远程terminal必须已经拥有它,以便在任何情况下validation它,则可以从链中省略指定根证书颁发机构的自签名证书。

解释得很好。 服务器是否真的这样做取决于系统pipe理员configuration它的方式。 由于许多客户端可以使用AIA扩展中提供的URL来获取他们的CA证书,所以许多configuration不当的服务器“离开”了。

许多客户端也caching他们接收/下载的证书,以减less每次链接build立时的读取负担。 Windows上的Chrome使用微软的CAPI来pipe理证书(和IE一样),它可以caching证书。 Linux / OSX上的Chrome使用Mozilla的NSS来pipe理证书,同时也caching证书。 因此,如果您在线使用了您的网站,那么所有优秀的CA证书都将被caching在您的系统中,而“离线”将可以正常工作(无论如何)。

但是,有些CA使用OCSP进行吊销检查。 如果您处于离线状态,则OCSP客户端无法联系OCSP响应方获取吊销信息。 在这种情况下会发生什么取决于您的客户端软件的configuration。 默认情况下,大多数浏览器的“软失败” – 也就是说,他们忽略了不能联系OCSP响应者并假定一切正常的事实。 如果无法联系OCSP响应者,可以将其中一些configuration为“严重失败”,否则将无法撤消检查。

当然,你的服务器发送什么取决于你如何configuration它。

它将发送SSLCertificateChainfile文件(如果已configuration)的内容和您的SSLCertificateFile的内容。

这些应该不需要CA根证书,但应该包含中间证书,以允许客户build立信任链。

我不知道脱机场景会发生什么,但是当你脱机的时候,你无法使用我的制作服务,所以这不是我一直在调查的问题。 请自己testing一下。