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


11

我的托管服务提供商最近为我的域重新颁发了SSL证书并重新安装了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错误的情况下连接到站点?

1
My hosting provider has recently re-issued and re-installed an SSL certificate for my domain, after they let the old one expire by mistake.-您如何将这项责任留在他们手中?
joeqwerty

3
仅仅是因为我不是sysadmin,所以我从他们那里租用了托管专用服务器。(对于这个小小的背景故事,我在经营业务的基础上编写语言学习材料和代码,因此,尽管很有趣,但是也要进行sysadmin的工作实在太多了。)
Fabien Snauwaert

7
@joeqwerty:因为这是他们的工作?他实际上是在付钱给他们,以便为他整理这些东西。
Lightness Races in Orbit

@LightnessRacesinOrbit:这是我没有做的假设,因此是个问题。
joeqwerty

1
bugzilla.mozilla.org/show_bug.cgi?id=399324是错误报告,请求支持在Firefox中自动下载中间证书。讨论(至今已有8年)归结为“ IE做到了!” /“对于IE而言,RFC表示它是可选的!” /“是否听说过鲁棒性原则?” /“您的服务器配置不正确,您应该感到不舒服!”

Answers:


22

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

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

SSLlabsSSL Server测试是一个非常有用的工具,可用来检查您的网站的SSL问题。正如您在上面的链接中看到的那样,不仅您在这里遇到了连锁问题,而且用于创建证书的签名算法也很弱,您的网络服务器仍然容易受到POODLE攻击,并且仍然支持RC4。也被认为是不安全的...

我不想对您的网络服务器提供商说什么,但在您的位置,我会邮寄给他们,让他们尽快解决所有问题,或更改为其他提供商...


谢谢,这非常有帮助。出于好奇,您知道为什么OS X上的客户端以及与我相同版本的Firefox会出现SEC_ERROR_UNKNOWN_ISSUER错误,而我却没有吗?可能是他的操作系统版本不同吗?
Fabien Snauwaert '16

1
@FabienSnauwaert是的,如果向下滚动到“握手模拟”,则SSLLabs测试将尝试模拟各种OS /浏览器版本组合。浏览器并不完全依靠自己来处理SSL连接,而是部分依赖于操作系统的实现。因此,肯定是OS版本有所作为。
s1lv3r 16-4-11

3
不仅仅是客户端可能具有不同的CA列表。如果浏览器以前访问过正确配置了中间证书的站点,则某些客户端还可能缓存中间证书,以使缺少中间证书的站点可以工作。
kasperd '16

SSLlabs网站是一个不错的工具。感谢您的参考。
Parapluie

12

为了使证书受信任,它必须由您的浏览器/ OS组合本身信任的实体签名,或由该实体本身签名的实体。这通常是由一个受信任的根CA完成的,该受信任的根CA对中间CA进行签名,并且中间CA对您的证书进行签名。这将创建一个链,如下所示:

  1. 您的计算机信任的根CA并签名
  2. 中级CA,该标志
  3. 您的证书仅受信任,因为它可以返回到根CA。

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

它对某些用户起作用的原因是他们在自己的“信任存储区”中拥有中间证书。在这种情况下,他们将接受您的证书,因为他们已经信任中间人。但是,如果您的访问者具有不同的操作系统/浏览器,则他们没有中间证书,因此他们需要从您的Web服务器获取证书-并且您的Web服务器不会分发它,因此他们无法验证它。


谢谢,这可以帮助我现在清楚地看到问题。有什么技巧可以让用户在等待主机修复证书时将中间证书添加到自己的“信任库”中?例如:访问另一个依赖它的SSL网站?
Fabien Snauwaert '16

1
不幸的是,@ FabienSnauwaert没有窍门。仅访问具有相同中间证书的站点将无济于事;他们将需要实际下载证书并将其手动添加到他们的浏览器中。我认为此特定证书包含在较新的浏览器中-在Firefox 45.0.1中有效,但在43.0.4中不可用,因此该证书包含在这两个版本之间。因此,如果您可以让客户升级他们的浏览器,那将会有所帮助。
詹妮·D

4
@JennyD中间证书是由现代浏览器缓存的,因此访问使用相同中间文件的其他站点很可能会起作用。但是,实际上这不是要问用户的问题……(请参阅:bugzilla.mozilla.org/show_bug.cgi? id=629558sslmate.com/blog/post/chrome_cached_sha1_chains
Bob

0

如果您使用的是HTTP公钥固定,并且您的提供者给您提供了一个新证书,则公钥可能已经更改。这些密钥将在指定的时间段内保存在客户端的浏览器中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.