在 nginx 上设置 SSL 证书时是否需要提供根证书

Rya*_*yan 4 security ssl https ssl-certificate certificate-authority

在 Qualys SSL 测试中,总是警告我根证书是额外下载的,可以安全删除。

但是,从 Comodo 网站上,他们关于在 nginx 上安装证书的指南是

NGINX Needed for this task: * PEM encoded certificates (Root, Intermediate(s) and 
Domain/Device) COMBINE (CONCATENATE) MULTIPLE CERTIFICATES INTO ONE FILE 
Run Code Online (Sandbox Code Playgroud)

你知道,他们是一个 CA,是真正的答案。那么,我应该相信哪一个呢?

更新:我还从其他 CA 那里收集了更多建议

建议添加根证书

建议不需要根证书

这么纠结?

Cry*_*t32 13

Qualys SSL 测试和 Comodo 都是正确的。Comodo 从服务器端代码的角度来看是正确的。Nginx 应该信任它使用的证书。

另一方面,从网络协议的角度来看,Qualys SSL 测试是正确的。在 SSL 协商期间,服务器必须发送自己的 SSL 证书和除根证书之外的所有中间 CA 证书。来自RFC 5246 §7.4.2 的参考:

certificate_list 这是一个证书序列(链)。发件人的证书必须排在列表的第一位。后面的每个证书必须直接证明它前面的证书。因为证书验证需要独立分发根密钥,指定根证书颁发机构的自签名证书可以从链中省略,假设远程端必须已经拥有它以便在任何情况下验证它。

  • 我认为 Web 服务器不需要与您提供的证书建立信任。毕竟,自签名证书也被接受。 (3认同)

Ste*_*ich 2

证书链验证的要点是您拥有本地受信任的(根)证书,并且您可以将信任推迟到对等方发送的证书。因此,服务器应该只发送叶证书和构建从本地根证书到叶证书的信任链所需的中间证书。这意味着您不应该发送根证书,但如果不发送,它通常会被忽略。

并且您应该确保按正确的顺序添加证书,即首先是叶证书,然后是按正确的签名顺序添加链证书。某些服务器或客户端可能会解决错误的顺序,但您不应该指望它。