我是Google Play中的一款应用,今天我收到了Google发来的一封邮件说:
Google Play警告:您使用的是不安全的实施 X509TrustManager
它说明了SSL证书问题以及解决问题的方法。
我因为好奇而问这个问题,
更多详情:
我的应用是使用Appcelerator Titanium构建的,谷歌表示此实现位于ti.modules.titanium.network.NonValidatingTrustManager;
。我确信我的代码中从未使用过这样的类。
答案 0 :(得分:8)
实际上这个警告究竟是什么?
您应该已经与this page相关联,这解释了它的全部内容。简而言之,谷歌正在为那些搞砸SSL的人扫描应用程序,例如盲目地接受所有证书都是有效的。
我没有在我的应用程序中使用任何与网络相关的活动(这是一个本地数据库驱动的应用程序),为什么我的应用程序出现了这个警告?
因为您的APK中的其他内容已经完成了此操作。在this developer的情况下,它是一个库。
我的应用程序是使用Appcelerator Titanium构建的,谷歌称此实现位于ti.modules.titanium.network.NonValidatingTrustManager;中。我确信我的代码中从未使用过这样的类。
您可能没有直接使用 。但是,其他东西正在使用它。或者,它可能就在那里,因为它只是整个Titanium框架的一部分并保留在你的APK中。
答案 1 :(得分: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日截止日期。我们将及时准备好修复和指示。
答案 2 :(得分:1)
阅读本文: 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
答案 3 :(得分:1)
问题与js代码无关。它在Titanium sdk内部,无论你是否使用某些功能。 我认为可能的解决方案是重写类 https://github.com/appcelerator/titanium_mobile/blob/bc85170157d3bebc5de1d61a9fe6e34bce84a8c9/android/modules/network/src/java/ti/modules/titanium/network/NonValidatingTrustManager.java
我们应该创建X509TrustManager的安全实现
答案 4 :(得分:0)
我在我的应用上收到了相同的消息。与OP指定的模块相同。
ti.modules.titanium.network.NonValidatingTrustManager;
到目前为止我的研究中有几点:
您应该使用HTTPClient的securityManager属性 实施对SSL证书商店的支持。
遗憾的是,SecurityManagerProtocol文档没有示例。我能找到的几个引用(http://docs.appcelerator.com/platform/latest/#!/api/Modules.Https)需要使用modules.https,它只是一个PAID模块。
我留下了一个问题:如果Google拒绝所有具有此特定问题的Appcelerator应用,并且只有付费订阅的开发者才能获得官方支持的解决方案,这是否意味着Appcelerator'社区版'与官方不兼容Google Play? Appcelerator是否计划为其社区成员正式支持HTTPS?
Appcelerator的任何人都在关注评论,好吗? 谢谢, 大卫