TLS с расширением Server Name Indication (RFC 3546) в Android

Я создаю приложение для Android, которое должно работать с https. У меня нет проблем с подключением https к https-адресу, который не использует TLS с Именем сервера Расширение индикации. Но мне нужно подключиться к https-адресу, который использует TLS с расширением SNI.

Что я сделал для https-адреса, использующего TLS без расширения имени хоста, было:

HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://exampleurl.com/api");

    try {

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("username", email));
        nameValuePairs.add(new BasicNameValuePair("ssh_public_key", publickey));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        HttpResponse response = httpclient.execute(httppost);

        Log.d(TAG, response.toString());

        return response.toString();

    } catch (Exception e) {
        Log.d(TAG, e.toString());
    } 

Как добавить расширение Server Name Indication в TLS в Android. После исследования я нашел один пост в stackoverflow, но не могу заставить его работать с этой информацией.

Но это немного в пути "Насколько мне известно, в Android SDK есть частичная поддержка. Текущая ситуация следующая:

Поскольку соединение TLS выпуска Gingerbread с HttpsURLConnection API поддерживает SNI. Клиентская библиотека Apache HTTP, поставляемая с Android, не поддерживает SNI. Веб-браузер Android также не поддерживает SNI (поскольку используется клиентский API Apache HTTP)».

«Спасибо за помощь. Я попробовал ссылку sni.velox.ch, используя классы SSLCONTEXT (TLS) и SSLENGINE, доступные в Android SDK. Я получаю рукопожатие».

Android SSL — поддержка SNI

Этот пост дает ответ, что это будет работать в Android, но я не могу понять, как это сделать с помощью HttpsURLConnection, SSLCONTEXT (TLS) и SSLENGINE.

Может ли кто-нибудь предоставить пример кода, как установить расширение индикации имени сервера в TLS?


person dennis    schedule 03.05.2012    source источник
comment
Независимо от SNI, я не уверен, что вы пытаетесь сделать, отправляя открытый ключ SSH в своем заголовке...   -  person Bruno    schedule 04.05.2012
comment
Привет Спасибо за ваш ответ! Но когда дело доходит до открытого ключа ssh, я знаю, что это то, что мне нужно. Система, которую приложение должно вызвать, является продвинутой и очень особенной. Кто-нибудь знает, как сделать вызов https с расширением хоста? Спасибо за ответы   -  person dennis    schedule 05.05.2012