如何解决“找不到证书-应用程序Chrome请求证书”Android/Google Chrome问题

32

问题

我们网站的一些用户在使用安卓设备的Google Chrome浏览器访问我们网站的安全区域时遇到了问题。

问题表现如下:

No certificates found' error, as seen in Chrome on Samsung Galaxy S6 (Android v5)

我已经能够在以下设备上使用Browserstack的物理设备测试复制此问题:
  • 三星Galaxy S6,三星Galaxy S5,三星Galaxy S4(Android v5和v4.4)
  • Nexus 6(Android v6,v5和v4.4)
  • Moto X第二代(Android v6和v5)

我的研究

我在线阅读了所有的文章、论坛和问题(除非我搜索错误),它们都指向服务器和/或SSL证书设置和配置,并且所遇到的问题是按设计而来。

建议修复方法1

到目前为止,我找到的最有用的文章是Issue 268055 "No Certificates Found",它在chromium问题跟踪器上。

评论18建议在IIS中更改SSL设置;

如果你有IIS访问权限,我可以解决这个问题。基本上,你需要进入SSL设置,确保未选中“要求SSL”,并选择“忽略”客户端证书。

评论28支持此观点;

对于非Google用户的情况,只有在遇到请求客户端证书的站点时才会出现此错误消息。Chrome无能为力-站点已请求客户端证书,为了知道客户端证书是否有效,Chrome for Android必须询问操作系统。那是你看到的提示-它由Android控制,并且所有应用程序(Google或其他)都需要通过该流程进行。
任何配置为请求客户端证书的站点都会发生这种情况,因此要解决此问题,要么不请求客户端证书,要么配置Android设备具有客户端证书(例如通过设备管理应用程序或通过安装PKCS#12文件)。
kamakshi:这是“按设计”行为,但需要服务器运营商更改,因此我不确定该怎么处理此错误。

就像评论43所说的那样;

我认为这个bug上的人们可能不太了解如何配置IIS。你需要和微软公司联系。从搜索结果看,“忽略客户端证书”似乎是你想要的选项。

我们已经这样做了,但似乎没有什么改变。

IIS SSL settings

IIS SSL settings

建议修复2

Stack上的另一个问题("证书在电脑上受信任,在安卓上不受信任")表明可能缺少中间证书;

您的证书文件中可能缺少中间证书。如果您已经访问过另一个具有相同证书卖家的网站,则浏览器会记住中间证书。这可能不是每个访问者都会发生的情况,甚至更好的情况是不会发生。 为了解决SSL连接中缺少中间证书的问题,您需要将中间证书添加到自己的证书文件中

我已经检查过,我们有一个域名证书(不是通配符证书),一个中间证书和一个根证书,因此我认为这也不是问题。我还在Networking4all网站上运行了站点检查器测试,以及在Qualys SSL网站上运行了SSL测试,它们都没有错误或警告。

我的问题

有其他人遇到过这个问题吗?我们可以尝试哪些其他解决方案来修复它?我已经没有更多的想法了,所以非常感谢任何建议。

一些额外的细节

网站所在的服务器正在运行 Windows Server 2008 R2 和 IIS 7.5,并且我们的 SSL 证书提供商是 Thawte。

提前致谢!


1
有没有解决这个问题的运气。我也遇到了同样的问题。 - alaney
1
任何禁用SSL要求的人都是疯了,并且会危及他的系统。 - JustAGuy
我使用应用程序时,当我点击邮件中的链接进行验证时也遇到了同样的问题。这是在Chrome中发生的。有人已经解决了吗?请帮忙。 - K.Sopheak
服务器在连接时请求客户端证书。运行Wireshark以查看实际发生的情况。在更改后,您是否完全重新启动了IIS? - Jonas Köritz
2个回答

15

我曾经遇到了完全相同的问题,以下是我的解决方法...

服务器规格(与原帖几乎相同)

  • Windows Server 2008 r2
  • IIS 7.5
  • SSL 供应商: GeoTrust RapidSSL

第一个问题:过时的加密策略

一些文章指出服务器可能有过时的加密策略。稍做研究后发现,必须使用注册表设置来配置所有内容。详细信息请参见 MS 支持文章《如何限制 Schannel.dll 中特定的加密算法和协议的使用》

不确定你的服务器是否最新? SSL Labs 的服务器测试是验证您网站加密策略的好工具。

需要手动编辑注册表吗?

MS 支持文章详细介绍了如何编辑注册表键。啊!再多研究一下,我找到了一个很棒的工具——IIS Crypto by Nartac Software,它可以在单击一下后更新所有注册表键。注意:还需要重新启动服务器。

来自 Nartac Software 网站的介绍:

IIS Crypto 是一款免费工具,它使管理员能够在 Windows Server 2008、2012 和 2016 上启用或禁用协议、密码、哈希和密钥交换算法。它还允许您重新排列 IIS 提供的 SSL/TLS 密码套件,通过单击实现最佳实践,创建自定义模板并测试您的网站。

第二个问题:不正确的 IIS SSL 站点设置

这个问题的根源在于IIS默认将SSL设置为“接受”客户端证书。实际上不需要接受客户端证书,所以只需将设置改为“忽略”(来自O.P.建议的修复#1图像)。

注意:图片显示“要求SSL”未选中;对于这个讨论,是否选中无关紧要。重要的是该网站可以使用https连接。

忽略IIS中的客户端证书

总结

一旦服务器重新配置了加密策略并将IIS SSL设置设置为忽略客户端证书,“未找到证书”错误就会得到解决。


nginx怎么样? - pmiranda

1

该消息和描述并不适合最终用户。它可能会让某些人认为 SSL/TLS 所使用的服务器标识存在问题,但事实并非如此。

虽然没有明确说明,但这是指 客户端证书,它可以用于验证用户身份,但如果提供了替代凭据(用户名/密码),则可能不需要该证书。

这不一定是服务器端的缺陷 -- 接受客户端证书可能是可取的。问题在于,一些浏览器(通常在移动应用程序中用于身份验证时)出于无特定原因而显示这个神秘的消息(大多数浏览器在客户端证书不存在时不会提到它)。

如果您确实支持可选的客户端证书,则解决方法是指示用户安装客户端证书(他们将从您那里获得)-- 或者每次忽略此消息并“取消”*(在这种情况下,他们将使用常规凭据登录)。

*实际上,用户可能不需要按“取消”,因为只需在对话框外部触摸屏幕即可达到相同的效果 -- 这就是此对话框的重要性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接