Firefox不加载证书链

我在Debian Squeeze上运行lighttpd/1.4.28 (ssl) 。 我刚刚创build了一个http://startssl.com证书,我的所有浏览器(Firefox,Chrome,Opera)运行良好,但我的用户报告了Firefox中的证书错误。 我已经将其归结为证书链加载失败:

在我的Firefox证书: http : //i.stack.imgur.com/moR5x.png
其他人的证书Firefox: http ://i.stack.imgur.com/ZVoIu.png(请注意这里缺lessStartCOM证书)

我遵循本教程将证书embedded到我的lighttpd中: https ://forum.startcom.org/viewtopic.php ? t = 719

我的lighttpd.conf的相关部分如下所示:

 $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.ca-file = "/etc/lighttpd/certs/ca-bundle.pem" ssl.pemfile = "/etc/lighttpd/certs/www.bisaboard.crt" } 

ca-bundle.pem是这样创build的: cat ca.pem sub.class1.server.ca.pem > ca-bundle.pem
我从这里抓取相关文件: http : //www.startssl.com/certs/

www.bisaboard.crt是这样创build的: cat certificate.pem ssl.key > www.bisaboard.crt
其中certificate.pem是我的StartSSL-Class1证书和ssl.key我的SSL根密钥。

你有什么想法为什么第二个Firefox不能正确加载证书链?

你的networking服务器似乎没有正确的提供中间证书,它在你自己的浏览器中工作的原因可能是你已经下载并在本地安装它们。

你为什么不直接从http://www.startssl.com/certs/ca-bundle.crt下载他们已经准备好的ca包并将其用于ssl.ca-file选项?

Firefox在validation整个证书链的过程中非常严格,而且您可能没有正确指定链中的所有证书。 我最近在Firefox上有一个类似的问题,在Lighttpd上有一个Comodo SSL证书,问题是我没有正确地列出ssl.ca文件中的链。

根据RFC 2246 ,发件人的证书必须先出现,每个证书都必须直接certificate之前的证书。 我最终得到了四个证书,一直到CA根目录。

certificate_list这是X.509v3证书的序列(链)。 发件人的证书必须在列表中排在第一位。 以下证书必须直接certificate前面的证书。 因为证书validation要求根密钥是独立分发的,所以假定远程terminal必须已经拥有它,以便在任何情况下validation它,可以可选地从链中省略指定根证书颁发机构的自签名证书。

我遇到了一个类似的问题:一些Firefox正在抱怨失踪链,但不是全部。 将额外的证书链参数(以及包含所有证书的文件一个接一个地)添加到服务器configuration似乎有所帮助。 我自己运行Apache Traffic Server。

该解决scheme也是SSLhopper在评论中的链接build议: http ://www.sslshopper.com/ssl-checker.html#hostname=www.bisaboard.de

我不知道lighttpdconfiguration,但可能有一个额外的参数来宣布中间证书的链文件。

我有同样的问题(使用node.js),解决scheme是将sub.class1.server.ca.pem文件追加到ssl.crt文件。

只需将sub.class1.server.ca.pem的内容复制到ssl.crt ,确保其中一个在另一个之间没有空格,它应该可以工作。

你可以在这里阅读更多。

昨天证书更新后我跑了那个问题。 我所有的testing设备/浏览器都可以正常工作,所以我开车回家了。

今天,我进了办公室,一半的公司/客户在浏览器中看到了浏览器的安全警告。

即使在这个公司使用相同的Firefox ESR版本?!

我的解决scheme是在服务器上使用正确的有效中间证书。

完全忘记了StartCom所具有的SHA1问题。

获取当前1级域名validation的SHA2中级证书(在我的情况下): https ://www.startssl.com/certs/sca.server1.crt,用它replace旧的onesub.class1.server.ca.pem,重新启动web服务器(我的端Apache),它将在所有浏览器中工作。