Firefox没有收到完整的证书链

服务器:使用SNI的Windows 2012 R2 / IIS 8.5(Azure虚拟机)

我有一个已经安装的SSL证书,并且可以在除Firefox和iOS Safari之外的所有浏览器中使用。 Chrome和IE中的链条如下所示:

Baltimore CyberTrust Root ---->XX Public Root Certification Authority -------->XX Certification Authority ----------->xxx.domain.com 

在iOS的Firefox和Safari中,您会收到一条消息,指出该网站不受信任,并且如果您通过“添加exception”查看证书,则链如下所示:

 XX Certification Authority ----->xxx.domain.com 

XXauthentication机构已经签署了xx.domain.com证书。 公共根证书颁发机构已经签署了XXauthentication机构,Cyber​​Trust已经签署了公共根证书。

中间证书位于服务器上的“中级证书颁发机构”存储中。 出于某种原因,Firefox不会下载完整的证书链(或者服务器没有发送它)。 我试图删除Firefoxconfiguration文件中的cert8.db,并一直在干净的机器上发生。

我已经在sslshopper.com和ssllabs.com上testing了我的域名。 他们不报告任何错误,并报告所有中间证书安装正确。

他们不报告任何错误,并报告所有中间证书安装正确。

你所描述的症状与这种说法有很大的相反之处。 Chrome(和IE?)自己下载缺less的中间证书,而Firefox和大多数移动应用程序则不需要。 SSLLabs不会将这些中间证书标记为丢失,但会标记为“额外下载”。

如果确实不是这种情况,请检查您的服务器是否启用了IPv4和IPv6,以及IPv6的设置是否不同。 SSLLabs不检查IPv6设置。 如果IPv6被使用取决于操作系统,连接和浏览器的偏好,所以这也可以解释这种差异。 在这方面的其他区别是服务器的不同的IP地址取决于位置或不同的testing,有时www.example.com有时只有example.com

经过多次的反复试验,我终于能够解决这个问题。 我不知道究竟是什么修复了它,但我继续从我的证书颁发机构加载了几个中间证书。 尽pipe我已经加载了与证书链名称相匹配的中间证书,但似乎并不符合序列号。 我终于find了Firefox和iOS Safari喜欢的组合。 尽pipe如此,SSL实验室从来没有显示额外的下载。