【问题标题】:How to fix apps containing an unsafe implementation of TrustManager?如何修复包含不安全的 TrustManager 实现的应用程序?
【发布时间】:2016-02-29 12:53:08
【问题描述】:

在开发者控制台中我的应用名称旁边看到来自 Google 的警告,关于 TrustManager 的不安全实施。我浏览了代码,但没有一个地方使用 TrustManager 或 checkServerTrusted 方法,所以我不确定在哪里处理 Google 建议的异常。我能想到的唯一可能是在 IAB(应用内计费)相关库中。有什么想法吗?

更新
虽然这个错误的原因可能因人而异,但在我的特定情况下,问题出在 Flurry 分析库上。我有一个相当旧的版本,一旦我删除它,问题就消失了。

【问题讨论】:

  • 您收到电子邮件了吗?通常会有一封电子邮件告诉你哪个班级被标记了。
  • 您收到此错误可能是因为您缺少实现。请参阅How to fix apps containing an unsafe implementation of TrustManager。它说“虽然这些特定问题可能不会影响使用 TrustManager 实现的每个应用程序,但最好不要忽略 SSL 证书验证错误。具有使用户面临妥协风险的漏洞的应用程序可能被视为违反以下规定的危险产品内容政策和开发者分发协议第 4.4 节。”
  • @Antimony 邮件中只提到了混淆的类名 com.b.a.af,不幸的是
  • @gerardnimo 谢谢,我知道原因——我正在尝试找到问题所在的确切位置。正如我所说,我不使用任何 TrustManager 或 SSL 等,所以唯一的怀疑是 Flurry 或 IAB 库
  • 库是否经过预混淆?如果你自己运行 proguard,应该可以获得未混淆名称的映射。

标签: google-play-services android-security developer-console trustmanager


【解决方案1】:

在您的活动中添加以下代码

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                try {
                    chain[0].checkValidity();
                } catch (Exception e) {
                    throw new CertificateException("Certificate not valid or trusted.");
                }
            }

【讨论】:

  • 何时何地调用此方法?
猜你喜欢
  • 2016-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多