android и ssl

#android #ssl

#Android #ssl

Вопрос:

r будет обмениваться файлами XML. На данный момент я использую обычные сокеты для доставки файлов из приложения в приложение, но мне нужно использовать SSL-соединение, поэтому я хочу использовать java SSLSockets. Моя проблема в том, что я действительно не знаю, как это сделать. Я много искал информацию в Интернете, но не нахожу ничего полезного. Кто-нибудь может привести мне какой-нибудь пример SSL-соединений Android-сервера? Спасибо за любую помощь.

Ответ №1:

Вы недостаточно искали: Справочное руководство по JSSE. Запуск сокетов в Android не является чем-то особенным, попробуйте. Следует отметить одну вещь: вы не можете использовать системные свойства, упомянутые в руководстве ( javax.net.ssl.trustStore и т.д.), Вы должны настроить хранилища доверия / ключей из кода.

Ответ №2:

Вот быстрый и грязный.

 import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.SingleClientConnManager;

public class EasyHttpClient extends DefaultHttpClient {

  /**
   * Connection manager that uses our SSL certificate.
   */
  @Override
  protected ClientConnectionManager createClientConnectionManager() {
    SchemeRegistry registry = new SchemeRegistry();

    // Register for HTTP.
    registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));

    // SSL Socket.
    SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory();
    sslSocketFactory.setHostnameVerifier(SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);

    // Register for HTTPS.
    registry.register(new Scheme("https", sslSocketFactory, 443));

    return new SingleClientConnManager(getParams(), registry);
  }
}