Я знаю, что этот вопрос задавался несколько раз, но я не нашел какого-либо полного решения ... Вот контекст: я разрабатываю приложение для Android, которое позволяет пользователю подключаться к своему собственному размещенному экземпляру сети. приложение. Некоторые пользователи связались со мной, чтобы спросить, могу ли я добавить поддержку HTTPS и, конечно же, поддержку сертификатов собственного производства. Поэтому я много читаю, и вот что я понял:
- Простое, но небезопасное решение - разрешить все сертификаты, ничего не проверяя. Я реализовал это, и это работает, но это явно не хорошее решение!
- Другое решение - создать хранилище ключей с необходимыми сертификатами. Но, с одной стороны, я заранее не знаю сертификатов пользователей, а с другой стороны, сложно попросить пользователя, который хочет использовать это приложение с HTTPS, поиграть с keytool или чем-то еще ...
Так что я хотел бы реализовать то же решение, что и веб-браузер, например. Поэтому, когда пользователь впервые пытается подключиться к своему серверу с HTTPS-сервером, приложение покажет ему подробности о недоверенном сертификате и спросит его, хочет ли он подключиться. Выбрав «Да, я уверен», этот сертификат будет сохранен, и приложение никогда не спросит его об этом.
Пока что я использую решение с HTTPClient и пользовательским SSLSocketFactory, которые разрешают все сертификаты ...
Я также видел что-то вроде SLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER, но я не совсем понимаю, может ли это помочь мне.
Есть ли у вас какие-либо идеи о том, как я мог бы предложить удобное и безопасное решение для использования HTTPS с самодельными сертификатами?