Вы используете небезопасную реализацию X509TrustManager
У меня есть приложение в Google Play, сегодня я получил письмо от Google, в котором говорится:
Предупреждение в Google Play: вы используете небезопасную реализацию X509TrustManager
В нем говорится о проблемах с сертификатами SSL и способе решения проблемы.
Я задаю этот вопрос из-за любопытства,
- Собственно, что это за предупреждение?
- Я не использую какие-либо связанные с сетью действия в своем приложении (это приложение с локальной базой данных), так почему это предупреждение произошло для моего приложения?
Подробнее:
Мое приложение было создано с использованием Appcelerator Titanium, и Google говорит, что эта реализация находится в ti.modules.titanium.network.NonValidatingTrustManager;
. Я уверен, что никогда не использовал такой класс в своем коде.
Ответы
Ответ 1
Собственно, что это за предупреждение?
Вы должны были быть связаны с этой страницей, что объясняет, что это такое. В двух словах Google сканирует приложения для людей, которые используют SSL, например, слепо принимают все сертификаты как действительные.
Я не использую какие-либо связанные с сетью действия в своем приложении (это приложение с локальной базой данных), так почему это предупреждение произошло для моего приложения?
Потому что что-то еще в вашем APK это сделало. В случае этого разработчика это была библиотека.
Мое приложение было создано с использованием Appcelerator Titanium, и Google говорит, что эта реализация находится в ti.modules.titanium.network.NonValidatingTrustManager;. Я уверен, что никогда не использовал такой класс в своем коде.
Возможно, вы не использовали его напрямую. Однако что-то еще использует его. Или, возможно, он существует, потому что это всего лишь часть общей структуры Titanium и остается в вашем APK.
Ответ 2
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/
В электронном письме говорится о крайнем сроке 17 мая для вновь представленных (!) приложений и обновлений. У нас будет исправление и инструкции, готовые вовремя.
Ответ 3
Прочтите это:
http://docs.appcelerator.com/platform/latest/#!/guide/SSL_Certificate_Store_Support_for_HTTP_Clients
Все о Google заставляет всех использовать https. Если вы используете в своем приложении объект Titanium.Network.createHTTPClient, тогда вам придется реализовать это с помощью этого:
var certificateStore = require('ti.certificatestore').
Модуль можно найти здесь: https://github.com/appcelerator-modules/ti.certificatestore
Ответ 4
Проблема не связана с кодом js. Он находится внутри Titanium sdk и не имеет значения, вы используете некоторые функции или нет.
Я думаю, что возможным решением является переписать класс
https://github.com/appcelerator/titanium_mobile/blob/bc85170157d3bebc5de1d61a9fe6e34bce84a8c9/android/modules/network/src/java/ti/modules/titanium/network/NonValidatingTrustManager.java
Мы должны создать безопасную реализацию X509TrustManager
Ответ 5
Я получил одно и то же сообщение в своих приложениях. Тот же модуль, что и OP.
ti.modules.titanium.network.NonValidatingTrustManager;
Несколько моментов моего исследования:
Вместо этого вы должны использовать свойство HTTPManient securityManager для внедрить поддержку SSL сертификатов.
-
Документы SecurityManagerProtocol, к сожалению, не имеют примеров. Несколько ссылок, которые я мог найти (http://docs.appcelerator.com/platform/latest/#!/api/Modules.Https), требуют использования modules.https, который является только модулем PAID.
-
У меня остается вопрос: если Google отклонит все приложения Appcelerator с этой конкретной проблемой, и только разработчики с платной подпиской получат официально поддерживаемое решение, означает ли это, что версия сообщества сообщества Appcelerator официально несовместима с Гугл игры? Планирует ли Appcelerator официально поддерживать HTTPS для членов сообщества?
Кто-нибудь из Appcelerator может прокомментировать, пожалуйста?
Спасибо,
Дэвид