Такого ощущения, что я искал всю сеть уже, но все, что я нашел намеки о том, как принять недопустимый или сертификат, подписанные самостоятельно автоматически. (Использование пользовательских HttpClient
и SSLSocketFactory
- Я уже получил эту работу.)Browser типа поведения на недействительных/самоподписанные сертификатах
Но для моего приложения я хочу, чтобы пользователь получал диалоговое окно с браузером, спрашивающее что-то вроде «Вы действительно хотите доверять этому серверу? взгляните на его сертификат ». (Но только если сертификату не доверяют проверки по умолчанию.)
Затем сертификат следует поместить в хранилище сертификатов приложения, чтобы в следующий раз его принять автоматически.
Так что мне нужно знать:
- Как загрузить сертификат (цепь) для конкретной комбинации хост/порт (чтобы иметь возможность показать его пользователю)?
- Как сохранить сертификат таким образом, чтобы я мог загрузить его позже в
KeyStore
?
Это мой поток планируется работа в приложении:
- Отправить запрос на сервер с моим обычаем
HttpClient
. Возможно, сертификат доверен системе или уже в моем магазине (если да, перейдите к 4). - Если запрос не выполнен из-за проблем с SSL, покажите пользователю сертификат и спросите, доверять ли этому соединению.
- Если пользователь решил доверять, сохраните сертификат в моем магазине и перейдите к 1.
- Ура, соединение готово к использованию.
Так кто знает, как это сделать?
Ничего себе, вы действительно правы в том, что все, что вы можете найти в Google, - это то, как отключить проверки CA. –