Android SSL 错误:证书不受信任......有时

Hac*_*tar 5 ssl https android certificate

在我正在开发的应用程序中,我必须与 Web 服务器建立 HTTPS 连接。我收到证书不可信错误,在咨询 stackoverflow 后,我发现了这篇博客文章:http://blog.antoine.li/index.php/2010/10/android-trusting-ssl-certificates/

该服务器的 CA 似乎未包含在 Android 的默认存储中。简而言之,我下载了所有证书,使用 BKS 提供程序创建了一个密钥库,导入了密钥,将密钥库导入到我的项目中,对 DefaultHttpClient 类进行子类化以强制它使用我的密钥库。

按照博客中的步骤操作后,它在模拟器上完美运行。然而,当我在设备上测试它时,它间歇性地失败。我想我已经隔离了一个模式。似乎过了一段时间后,我尝试建立 HTTPS 连接,但会失败。然后,如果我再次尝试相同的连接,它将成功。如果我等待一段时间然后重试,第一次会失败,多次尝试会成功。我可能可以通过多次尝试失败来修复它,但我想知道发生了什么。该行为表明存在某种缓存,但我不知道如何找到它或修改其行为。有谁对正在发生的事情有任何建议或知道我做错了什么?任何帮助,将不胜感激。

小智 1

纯粹是猜测,但我不久前在 Windows/IE 环境中处理过类似的情况,其中证书间歇性失败。在这两种情况下,我都有代理,但我没有意识到代理正在干扰我。

第一个是 Fiddler - 一个 Web 调试器,当我使用它时,它会将证书代理到浏览器。

第二次我遇到了我们的企业互联网过滤解决方案(Web Sense)的问题,该解决方案也充当代理,有点 - 它最终会允许证书信息正确通过,但在第一次尝试时不会。

我不知道这是否是您的情况,但这是我唯一一次看到像您所描述的行为。