12

我在 Google Play 中有一个应用程序,今天我收到了来自 Google 的邮件说:

Google Play 警告:您正在使用 X509TrustManager 的不安全实现

它说明了 SSL 证书问题和解决问题的方法。

我问这个问题是因为好奇

  1. 实际上这个警告是关于什么的?
  2. 我没有在我的应用程序中使用任何与网络相关的活动(它是一个本地数据库驱动的应用程序),那么为什么我的应用程序会出现此警告?

更多细节:

我的应用程序是使用 Appcelerator Titanium 构建的,谷歌说这个实现是在ti.modules.titanium.network.NonValidatingTrustManager;. 我确信我从未在我的代码中使用过这样的类。

4

5 回答 5

8

实际上这个警告是关于什么的?

你应该已经链接到这个页面,它解释了它的全部内容。简而言之,谷歌正在扫描应用程序以找出搞砸 SSL 的人,例如盲目地接受所有证书为有效证书。

我没有在我的应用程序中使用任何与网络相关的活动(它是一个本地数据库驱动的应用程序),那么为什么我的应用程序会出现此警告?

因为你的 APK 中的其他东西已经做到了这一点。在这个 developer的例子中,它是一个库。

我的应用程序是使用 Appcelerator Titanium 构建的,谷歌说这个实现在 ti.modules.titanium.network.NonValidatingTrustManager; 中。我确信我从未在我的代码中使用过这样的类。

您可能没有直接使用它。但是,其他东西正在使用它。或者,它的存在可能是因为它只是整个 Titanium 框架的一部分,并且保留在您的 APK 中。

于 2016-02-18T19:08:38.153 回答
6

Appcelerator 在 JIRA 上跟踪此问题: https ://jira.appcelerator.org/browse/TIMOB-20431

我们还在此处发布了包含信息的博客文章:http: //www.appcelerator.com/blog/2016/02/google-security-alert-unsafe-implementation-of-the-interface-x509trustmanager/

这封电子邮件谈到了新提交的 (!) 应用程序和更新的截止日期为 5 月 17 日。我们将及时准备好修复和说明。

于 2016-02-19T07:01:35.173 回答
2

阅读: http ://docs.appcelerator.com/platform/latest/#!/guide/SSL_Certificate_Store_Support_for_HTTP_Clients

这一切都是关于谷歌推动每个人使用 https。如果您在您的应用程序中使用 Titanium.Network.createHTTPClient 对象,那么您必须使用以下方法实现它:

var certificateStore = require('ti.certificatestore').

该模块可以在这里找到:https ://github.com/appcelerator-modules/ti.certificatestore

于 2016-02-18T23:01:34.160 回答
1

该问题与js代码无关。它在 Titanium sdk 内部,无论您是否使用某些功能。我认为可能的解决方案是重写类 https://github.com/appcelerator/titanium_mobile/blob/bc85170157d3bebc5de1d61a9fe6e34bce84a8c9/android/modules/network/src/java/ti/modules/titanium/network/NonValidatingTrustManager.java

我们应该创建 X509TrustManager 的安全实现

于 2016-02-19T06:06:38.817 回答
0

我刚刚在我的应用程序上收到了相同的消息。指定为 OP 的相同模块。

ti.modules.titanium.network.NonValidatingTrustManager;

到目前为止,我的研究有几点:

您应该改为使用 HTTPClient 的 securityManager 属性来实现对 SSL 证书存储的支持。

  • 不幸的是,SecurityManagerProtocol 文档没有示例。我能找到的少数参考资料(http://docs.appcelerator.com/platform/latest/#!/api/Modules.Https)需要使用 modules.https,它只是一个付费模块。

  • 我的问题是:如果 Google 拒绝所有存在此特定问题的 Appcelerator 应用程序,并且只有付费订阅的开发人员才能获得官方支持的解决方案,这是否意味着 Appcelerator 的“社区版”与 Google Play 正式不兼容?Appcelerator 是否计划为其社区成员正式支持 HTTPS?

Appcelerator 的任何人都愿意发表评论吗?谢谢你,大卫

于 2016-02-19T04:06:23.167 回答