SSL 证书如何仅适用于某些客户端?

Fab*_*ert 12 ssl ssl-certificate

我的托管服务提供商最近为我的域重新颁发并重新安装了 SSL 证书,因为他们让旧证书错误地过期。

我现在可以再次通过 HTTPS浏览网站,我的主机也是如此,其他一些用户也是如此。

然而,一些用户(至少数百个)仍然Your connection is not secure在不同的浏览器和平台上收到错误消息。(事实证明,很难诊断出我无法重现的问题。)

我了解不同的浏览器使用不同的证书颁发机构 (CA) 列表。

  1. 为什么运行与我相同版本的 Firefox(OS X 上为 45.0.1)的用户SEC_ERROR_UNKNOWN_ISSUER出现错误(仅适用于我的网站),而我却没有?什么使它成为可能?所述用户清除了他的缓存并重新启动了他的笔记本电脑。

在 digicert.com 上运行了SSL 检查。结果是这样的:

SSL 证书不受信任

该证书不是由受信任的机构签署的(对照 Mozilla 的根存储进行检查)。如果您从受信任的机构购买了证书,您可能只需要安装一个或多个中间证书。请联系您的证书提供商以获取针对您的服务器平台执行此操作的帮助。

  1. 如果是这种情况,我怎么能在没有 SSL 错误的情况下连接到站点?

s1l*_*v3r 22

您的证书的证书链不完整。很可能您的提供商在安装新证书时未能安装某些中间证书。

大多数情况下,此类中间证书由 SSL 授权机构提供,以支持某些较旧的浏览器和操作系统。这就是原因,虽然它对您有用,但对您的某些客户却不起作用。

检查网站 SSL 问题的一个非常棒的实用程序是SSLlabsSSL 服务器测试。正如您在上面的链接中所看到的,您不仅在这里存在链问题,而且用于创建证书的签名算法也很弱,您的网络服务器仍然容易受到POODLE 攻击并且仍然支持 RC4,这是也被认为是不安全的......

我不想对您的网络服务器提供商发表任何意见,但在您的立场上,我会邮寄给他们,让他们尽快解决所有这些问题,或者更改为其他提供商......

  • 不仅仅是客户端可能拥有不同的 CA 列表。如果浏览器之前访问过正确配置了中间证书的站点,则某些客户端也可能缓存中间证书,以便缺少中间证书的站点可以工作。 (4认同)

Jen*_*y D 12

为了使证书受信任,它必须由本身受您的浏览器/操作系统组合信任的实体签名,或者本身已由此类实体签名。这通常由一个受信任的根 CA 完成,它签署一个中间 CA,然后中间 CA 签署您的证书。这将创建一个链,如下所示:

  1. 您的计算机信任的根 CA,并签名
  2. 中间 CA,它签署
  3. 您的证书,仅由于返回根 CA 的链而受信任。

这里的问题是中间 CA 证书。为了确保每个人都可以验证一直到根 CA 的链,您的提供商应该在其服务器配置中包含中间证书。在这种情况下,他们没有。

它适用于某些用户的原因是他们在自己的“信任库”中有中间证书。在这些情况下,他们会接受您的证书,因为他们已经信任中间人。但是如果您的访问者使用不同的操作系统/浏览器,他们没有中间证书,因此他们需要从您的网络服务器获取它 - 而您的网络服务器不会分发它,因此他们无法验证它。

  • @JennyD 中间证书由现代浏览器缓存,因此访问使用相同中间证书的不同站点很可能会起作用。然而,这真的不是人们应该问他们的用户的事情......(参见:https://bugzilla.mozilla.org/show_bug.cgi?id=629558, https://sslmate.com/blog/post/chrome_cached_sha1_chains ) (4认同)