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

Posted

技术标签:

【中文标题】如何解决“未找到证书 - Chrome 应用程序已请求证书”Android / Google Chrome 问题【英文标题】:How can I fix the "No certificates found - The app Chrome has requested a certificate" Android / Google Chrome issue 【发布时间】:2016-08-28 14:17:45 【问题描述】:

问题

我们的一些网站用户在访问我们网站的安全区域时遇到问题,在 android 设备上,在 Google Chrome 中。

看起来像这样;

我已经能够使用 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"。

Comment 18 建议更改 IIS 中的 SSL 设置;

如果您可以访问 IIS,我可以解决此问题。 基本上您需要转到 SSL 设置并确保未选中需要 SSL 并为客户端证书选择“忽略”

Comment 28 支持它;

对于非 Google 员工,仅当您遇到请求客户端证书的网站时才会出现此错误消息。 Chrome 在这里无能为力 - 该站点已请求客户端证书,即使要知道客户端证书是否有效,Chrome for Android 也必须询问操作系统。这就是您看到的提示 - 它由 Android 控制,所有应用(Google 或其他)都需要通过该流程。

任何配置为请求客户端证书的站点都会出现这种情况,因此,要解决此问题,请不要请求客户端证书,或者将您的 Android 设备配置为具有客户端证书(例如,通过设备管理应用程序或通过安装 PKCS#12 文件)。

kamakshi:这都是“设计”行为,但需要服务器操作员进行更改,所以我不确定如何处理这个错误。

comment 43 也是如此;

我认为这个错误的人不会对配置 IIS 了解很多。你想和微软谈谈。 通过搜索,“忽略客户端证书”似乎是您想要的选项

我们已经做到了,但似乎没有什么不同。

建议的修复 2

Stack 上的另一个问题 ("certificate trusted on pc but not in android") 表明可能缺少中间证书;

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

我已经检查过了,我们有一个域证书(不是通配符证书)、一个中间证书和一个根证书,所以我认为这也不是问题。我还在 Networking4all 网站上运行了site checker 测试,并在 Qualys SSL 网站上运行了SSL test,它们的路径都没有错误或警告。

我的问题

还有其他人遇到过这个问题吗?还有其他我们可以尝试解决的解决方案吗?在这一点上我没有想法,所以任何建议都将不胜感激。

一些额外的细节以防万一

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

提前致谢!

【问题讨论】:

祝你好运解决这个问题。我遇到了同样的问题 任何禁用 SSL 要求的人都疯了,并损害了他的系统。 当我点击链接从电子邮件中验证时,我的应用程序也遇到了同样的问题。它发生在铬上。有人解决了吗?请帮忙 服务器正在请求连接时的客户端证书。运行 wireshark 以查看网络上实际发生的情况。进行更改后,您是否完全重新启动了 IIS? 【参考方案1】:

刚刚解决了这个完全相同的问题,这就是我发现的......

服务器规格(与 O.P 基本相同)

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

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

几篇文章指出服务器可能具有过时的加密策略。一些研究表明,一切都必须使用注册表设置进行配置。有关详细信息,请参阅 MS 支持文章 How to restrict the use of certain cryptographic algorithms and protocols in Schannel.dll。

不确定您的服务器是否是最新的? SSL Labs' Server Test 是用于验证您网站的加密政策的绝佳工具。

手动编辑注册表?

MS 支持文章详细介绍了编辑注册表项。啊!进行更多研究后,我发现了一个名为IIS Crypto by Nartac Software 的出色实用程序,只需单击一下即可更新所有注册表项。仅供参考:也需要重新启动。

来自 Nartac 软件网站:

IIS Crypto 是一个免费工具,让管理员能够 启用或禁用协议、密码、散列和密钥交换 Windows Server 2008、2012 和 2016 上的算法。它还可以让您 重新排序 IIS 提供的 SSL/TLS 密码套件,实施最佳实践 只需单击一下,即可创建自定义模板并测试您的网站。

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

此问题的根源在于 IIS 默认将 SSL 设置设置为“接受”客户端证书。无需接受客户端证书,因此只需将设置设置为“忽略”(来自 O.P. 建议的修复 #1 图像)。

注意:图像显示“需要 SSL”未选中;对于这个讨论,是否检查是不相关的。重要的是网站可以使用 https 进行连接。

总结

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

【讨论】:

nginx呢?

以上是关于如何解决“未找到证书 - Chrome 应用程序已请求证书”Android / Google Chrome 问题的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Ajax 跨域请求不到的问题

如何解决包冲突问题

如何解决包冲突问题

如何解决ajax跨域问题

MySQL 的 10048问题,如何解决?

如何解决smartgit的冲突问题