Android: как принять сертификат CA

1

Я пытаюсь сделать безопасное соединение с сервером OCS через https в android.

Я нашел классы EasySSLFactory и EasyX509TrustManager, чтобы заставить андроид доверять сертификату, но я не знаю, как инициализировать только один раз объекты EasySSLFactory и EasyX509TrustManager.

У меня есть следующий код, чтобы принять сертификат и сделать одно соединение:

    SchemeRegistry schemeRegistry = new SchemeRegistry();

    schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(),
            443));

    HttpParams params = new BasicHttpParams();
    params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 3);
    params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE,
            new ConnPerRouteBean(1));
    params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
    HttpProtocolParams.setContentCharset(params, "utf8");

    int timeoutConnection = 1000;
    HttpConnectionParams.setConnectionTimeout(params, timeoutConnection);

    int timeoutSocket = 1000;
    HttpConnectionParams.setSoTimeout(params, timeoutSocket);

    clientConnectionManager = new ThreadSafeClientConnManager(params,
            schemeRegistry);

    HttpClient client = new DefaultHttpClient(clientConnectionManager,
            params);

Чтобы создать новое соединение в новом методе, я должен написать эти строки тоже... Есть ли способ, которым я могу поместить их в конструктор класса, а затем выполнить соединения в этом классе, не записывая это до подключения.

Спасибо

Теги:
ssl-certificate
ca

1 ответ

0
Лучший ответ

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

Надеюсь, что это поможет

РЕДАКТИРОВАТЬ: я не пробовал, но возможно интерфейс TrustStrategy может помочь.

Вы можете реализовать свой собственный интерфейс TrustStrategy и инициализировать SSLSocketFactory с помощью соответствующего конструктора. Ваша стратегия может просто вернуть true (в методе isTrusted), но вы должны сделать по соображениям безопасности небольшую проверку, чтобы убедиться, что сертификат можно считать доверенным (это зависит от ваших потребностей)

Посмотрите на строку 35 в моей статье в блоге SecureHttpClient. Замените строку следующим образом:

SSLSocketFactory sf = new SSLSocketFactory(myTrustStrategy);

Пожалуйста, дайте мне знать, если это сработает для вас.

Привет

  • 0
    Привет саксофон, спасибо за ваш ответ. Это мне как-то помогает, но проблема в том, что мое приложение является клиентом im, и оно должно подключаться к большому количеству серверов ocs, и я не могу собрать все возможные сертификаты для всех серверов :(, у вас есть другое решение? Спасибо очень!
  • 0
    Привет Ката. Я отредактировал ответ. Надеюсь, это поможет вам сейчас. С уважением

Ещё вопросы

Сообщество Overcoder
Наверх
Меню