Безопасная поддержка HTTPS в приложении Android с ненадежными сертификатами - PullRequest
3 голосов
/ 07 февраля 2012

Я знаю, что этот вопрос задавался несколько раз, но я не нашел какого-либо полного решения ... Вот контекст: я разрабатываю приложение для Android, которое позволяет пользователю подключаться к своему собственному размещенному экземпляру сети. приложение. Некоторые пользователи связались со мной, чтобы спросить, могу ли я добавить поддержку HTTPS и, конечно же, поддержку сертификатов собственного производства. Поэтому я много читаю, и вот что я понял:

  • Простое, но небезопасное решение - разрешить все сертификаты, ничего не проверяя. Я реализовал это, и это работает, но это явно не хорошее решение!
  • Другое решение - создать хранилище ключей с необходимыми сертификатами. Но, с одной стороны, я заранее не знаю сертификатов пользователей, а с другой стороны, сложно попросить пользователя, который хочет использовать это приложение с HTTPS, поиграть с keytool или чем-то еще ...

Так что я хотел бы реализовать то же решение, что и веб-браузер, например. Поэтому, когда пользователь впервые пытается подключиться к своему серверу с HTTPS-сервером, приложение покажет ему подробности о недоверенном сертификате и спросит его, хочет ли он подключиться. Выбрав «Да, я уверен», этот сертификат будет сохранен, и приложение никогда не спросит его об этом.

Пока что я использую решение с HTTPClient и пользовательским SSLSocketFactory, которые разрешают все сертификаты ... Я также видел что-то вроде SLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER, но я не совсем понимаю, может ли это помочь мне.

Есть ли у вас какие-либо идеи о том, как я мог бы предложить удобное и безопасное решение для использования HTTPS с самодельными сертификатами?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...