Вы используете небезопасную реализацию 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;

Несколько моментов моего исследования:

  • http://docs.appcelerator.com/platform/latest/#!/guide/SSL_Certificate_Store_Support_for_HTTP_Clients обсуждает проблему и предоставляет примеры для iOS и Android. Однако:
    • примеры для каждой ОС различны и требуют создания или загрузки модулей (Android один уже пару лет).
    • в документах указано, что эти методы больше не поддерживаются и

Вместо этого вы должны использовать свойство HTTPManient securityManager для внедрить поддержку SSL сертификатов.

  • Документы SecurityManagerProtocol, к сожалению, не имеют примеров. Несколько ссылок, которые я мог найти (http://docs.appcelerator.com/platform/latest/#!/api/Modules.Https), требуют использования modules.https, который является только модулем PAID.

  • У меня остается вопрос: если Google отклонит все приложения Appcelerator с этой конкретной проблемой, и только разработчики с платной подпиской получат официально поддерживаемое решение, означает ли это, что версия сообщества сообщества Appcelerator официально несовместима с Гугл игры? Планирует ли Appcelerator официально поддерживать HTTPS для членов сообщества?

Кто-нибудь из Appcelerator может прокомментировать, пожалуйста? Спасибо, Дэвид