我的SSL信任链有什么问题?

我的网站https://www.snipsalonsoftware.com/的SSL证书不适用于Android。 在解决这个问题时,我把我的网站插入到Qualys SSL Labstesting工具中:

https://www.ssllabs.com/ssltest/analyze.html?d=www.snipsalonsoftware.com&s=50.57.1​​81.104

这份报告似乎告诉我,我有“连锁问题”。 有些东西是“不完整的”。 但是我很难理解什么是不完整的。

在下一节中,在“authenticationpath”下,我看到橙色(我猜橙色意味着“有点不好”)“额外下载”。 我不知道这意味着什么或如何解决这个问题。 我发现这个线程 ,但我不知道如何将他们正在说的解释为我。

我该怎么办?

您已将服务器configuration为仅将证书发送给浏览器。 对于大多数桌面浏览器来说,这很好,因为它们已经包含了大量的中间和根CA的细节,所以它们可以轻松地构build信任链。 对于大多数移动浏览器,您通常需要提供整个证书链(即您自己的证书),颁发CA的证书以及可能存在于最终根CA之间的任何中间件。 只有在这种情况下,移动设备才可能拥有根CA的详细信息。

对于您特定的证书,您可以阅读此Comodo帮助台文章: 知识库:Comodo证书颁发机构>证书> SSL>证书安装

证书可以包含一个特殊的机构信息访问扩展( RFC-3280 ),其中包含颁发者证书的URL。 大多数浏览器都可以使用AIA扩展下载缺less的中间证书来完成证书链。 但有些客户端(移动浏览器,OpenSSL)不支持这种扩展,所以他们报告这样的证书不可信。

您可以手动解决不完整的证书链问题,方法是将证书中的所有证书连接到受信任的根证书(独占,按此顺序),以防止出现此类问题。 请注意,受信任的根证书不应该存在,因为它已包含在系统的根证书存储区中。

你应该能够从发行者那里获取中间证书,并且自己将它们连接在一起。 我已经写了一个脚本来自动执行这个过程,它在AIA扩展上循环以产生正确链接的证书的输出。 https://github.com/zakjan/cert-chain-resolver