在Qualys SSLtesting中,总是警告我,根证书是一个额外的下载,可以安全地删除。
但是,从Comodo网站上,他们在nginx上安装证书的指南是
NGINX Needed for this task: * PEM encoded certificates (Root, Intermediate(s) and Domain/Device) COMBINE (CONCATENATE) MULTIPLE CERTIFICATES INTO ONE FILE
你知道,他们是一个CA,是真正的答案。 那么,我应该信任哪一个呢?
更新:我也收集来自其他CA的更多build议
build议添加根证书
build议不需要根证书
这么混乱?
Qualys SSLtesting和Comodo都是正确的。 Comodo从服务器端的angular度来看是正确的。 Nginx应该信任它使用的证书。
另一方面,Qualys SSLtesting从networking协议的angular度来看是正确的。 在SSL协商期间,服务器必须发送自己的SSL证书和除根证书以外的所有中间CA证书。 RFC 5246§7.4.2的参考:
certificate_list这是证书的序列(链)。 发送者的证书必须在列表中首先出现。 以下每个证书都必须直接certificate前面的证书。 由于证书validation要求根密钥是独立分发的,因此假定远程terminal必须已经拥有它,以便在任何情况下validation它,则可以从链中省略指定根证书颁发机构的自签名证书。
证书链validation的重点在于您拥有本地信任的(根)证书,并且您将信任推迟给对等方发送的证书。 所以服务器只应该把叶证书和build立信任链所需的中间证书从本地根证书发送到叶证书。 这意味着你不应该发送根证书,但如果你不这样做,通常会被忽略。
而且你应该确保你以正确的顺序添加证书,即首先是叶证书,然后是正确的签署顺序的链证书。 有些服务器或客户端可能会绕错误的顺序工作,但不应该依靠它。