2013-07-13 4 views
6

Такого ощущения, что я искал всю сеть уже, но все, что я нашел намеки о том, как принять недопустимый или сертификат, подписанные самостоятельно автоматически. (Использование пользовательских HttpClient и SSLSocketFactory - Я уже получил эту работу.)Browser типа поведения на недействительных/самоподписанные сертификатах

Но для моего приложения я хочу, чтобы пользователь получал диалоговое окно с браузером, спрашивающее что-то вроде «Вы действительно хотите доверять этому серверу? взгляните на его сертификат ». (Но только если сертификату не доверяют проверки по умолчанию.)

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

Так что мне нужно знать:

  • Как загрузить сертификат (цепь) для конкретной комбинации хост/порт (чтобы иметь возможность показать его пользователю)?
  • Как сохранить сертификат таким образом, чтобы я мог загрузить его позже в KeyStore?

Это мой поток планируется работа в приложении:

  1. Отправить запрос на сервер с моим обычаем HttpClient. Возможно, сертификат доверен системе или уже в моем магазине (если да, перейдите к 4).
  2. Если запрос не выполнен из-за проблем с SSL, покажите пользователю сертификат и спросите, доверять ли этому соединению.
  3. Если пользователь решил доверять, сохраните сертификат в моем магазине и перейдите к 1.
  4. Ура, соединение готово к использованию.

Так кто знает, как это сделать?

+0

Ничего себе, вы действительно правы в том, что все, что вы можете найти в Google, - это то, как отключить проверки CA. –

ответ

0

Не отключайте CA проверку и исключение при попытке подключения к сертификату не CA. Когда вы поймаете исключение, запустите свою страницу для пользователя, чтобы принять/отклонить. Если он принимает, то запуск нового соединения с проверками CA отключен.

+0

Спасибо за ваш ответ. Прямо сейчас, я больше не работаю над этим проектом. Я вернусь к вашему ответу, как только вернусь к работе. – fero

Смежные вопросы