Используя HttpsUrlConnection на Android, если я подключаюсь к серверу с ненадежным сертификатом, скорее всего, самозаверяющим, я получаю сообщение об ошибке. Например, когда что-то подобное происходит в браузере, я все равно получаю возможность принять этот сертификат.
- План состоит в том, чтобы запустить соединение URL как обычно.
- Если возникает ошибка сертификата, повторно запустите его с параметрами Dummy «доверять всем», при этом, конечно, все еще разрывая соединение, как только сертификаты будут получены (в X509TrustManager, а затем в HostNameVerifier). Возврат false в HostNameVerifier отлично справляется с этой задачей.
- Спросите пользователя, действительно ли он хочет использовать этот сертификат.
Теперь, как мне добавить этот сертификат в хранилище приложений, чтобы его можно было использовать при следующем подключении к этому серверу?
Или мне нужно приготовить свой собственный X509TrustManager/HostNameVerifier и сравнить входящие данные сертификата с сохраненными, сохраняя при этом нормальную работу для всех сертификатов, подписанных CA.
Другими словами.
- Получить публичный сертификат с сервера (сделано)
- Спросите пользователя, хотят ли они его использовать.
- ИМПОРТируйте этот общедоступный сертификат в собственное хранилище приложения для использования в будущих подключениях.
- откат к обычной цепочке доверия для всех доверенных сертификатов ЦС.
Потому что я видел это со всеми другими вопросами, задающими что-то подобное этому, когда люди начинают предлагать все неправильные решения. Мне НЕ нужен AcceptAllVerifier. Я НЕ могу использовать что-либо, что требует импорта сертификата вручную.