August 11th, 2020

стид

Вопрос к тем, кто программирует в андроиде

Всё, мой мозг сломался, я не понимаю, чего нужно гуглу.

Вопрос к тем, кто программирует в андроиде.

Мне нужно получить строку через https соединение с сервером из андроида. Беру самый простой пример.
Collapse )
Всё компилируется и работает.
После заливки Гугл ругается
--------
В одном или нескольких из ваших приложений используется небезопасная реализация интерфейса X509TrustManager. Она игнорирует все ошибки, возникающие при проверке сертификата SSL и установке HTTPS-соединения с удаленным хостом. При этом приложение становится уязвимым для атак посредников, с помощью которых злоумышленники могут прочитать или даже подменить данные, передаваемые по HTTPS-соединению (например, учетные данные).
[...]
Чтобы избежать проблем при проверке сертификата SSL, измените код метода checkServerTrusted в интерфейсе X509TrustManager, чтобы при обнаружении подозрительных сертификатов срабатывало исключение CertificateException или IllegalArgumentException. Обратите внимание на следующие частые ошибки:

Убедитесь, что метод не перехватывает исключения checkServerTrusted, иначе checkServerTrusted прекратит работу и угроза вредоносных сертификатов сохранится.

Не используйте checkValidity для проверки сертификата сервера. Этот метод проверяет срок действия сертификата, а не его безопасность.
----------------

Вопрос к тем, кто программирует в андроиде. Чего им надо? Чтобы срабатывало или не перехватывать? Как именно должно срабатывать? Примеры, что я видел и пробовал применять, содержали именно checkValidity. Тогда чем проверять безопасность сертификата?

На stackoverflow я тоже был и пробовал варианты оттуда - гугл ругается опять.
Если есть профильные сообщества ЖЖ по андроиду, прошу сказать, потому что не нагуглил.

Вот такой я тупой сегодня. Решил, что лучше спрошу совета, чем буду биться головой об стенку. Может быть, кто-то сталкивался или у кого-то есть знакомый, который может подсказать. Хотя бы ссылку кинуть.

Обновлено.

Заменил этот кусок
------
sslContext.init(null, new TrustManager[] {
new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) {}
public void checkServerTrusted(X509Certificate[] chain, String authType) {}
public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[]{}; }
}
}, null);
-------

на этот
----------
sslContext.init(null, null, null);
------
Посмотрим, что ответит гугл.