服务器:使用 SNI(Azure 虚拟机)的 Windows 2012 R2 / IIS 8.5
我有一个已安装的 SSL 证书,该证书在除 Firefox 和 iOS Safari 之外的所有浏览器中均可用。Chrome 和 IE 中的证书链如下所示:
Baltimore CyberTrust Root
---->XX Public Root Certification Authority
-------->XX Certification Authority
----------->xxx.domain.com
在 iOS 上的 Firefox 和 Safari 中,您会收到一条消息,提示该网站不受信任,如果您通过“添加例外”查看证书,则链显示如下:
XX Certification Authority
----->xxx.domain.com
XX 证书颁发机构已签署 xx.domain.com 证书。公共根证书颁发机构已签署 XX 证书颁发机构,CyberTrust 已签署公共根证书。
中间证书位于服务器上的中间证书颁发机构存储中。出于某种原因,Firefox 不会下载完整的证书链(或者服务器没有发送它)。我曾尝试删除 Firefox 配置文件中的 cert8.db,并且这种情况在干净的机器上一直发生。
我已经在 sslshopper.com 和 ssllabs.com 上测试了我的域名。它们没有报告任何错误,并报告所有中间证书均已正确安装。
答案1
它们没有报告任何错误,并报告所有中间证书都已正确安装。
您描述的症状与此说法完全相反。Chrome(和 IE?)会自行下载缺失的中间证书,而 Firefox 和大多数移动应用程序则不会。SSLLabs 不会将这些中间证书标记为缺失,但它们会被标记为“额外下载”。
如果情况并非如此,请检查您的服务器是否启用了 IPv4 和 IPv6,以及 IPv6 的设置是否不同。SSLLabs 不会检查 IPv6 设置。是否使用 IPv6 取决于操作系统、连接性和浏览器的首选项,因此这也可能解释了这些差异。该领域的其他差异是服务器的 IP 地址因位置而异或测试不同,即有时www.example.com
和有时只有example.com
。
答案2
经过多次尝试和错误,我终于能够修复它。我不知道究竟是什么修复了它,但我继续从我的认证机构加载几个中间证书。虽然我加载了与证书链名称匹配的中间证书,但它似乎与序列号不匹配。我终于找到了 Firefox 和 iOS Safari 喜欢的组合。不过,SSL Labs 从未显示额外下载。