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

Я хотел бы узнать о поддержке расширения SSL/TLS Server Name Indication (SNI) в Android SDK.


person user736435    schedule 04.05.2011    source источник
comment
даже сейчас ряд http-библиотек Android не поддерживают SNI, я просто столкнулся с проблемой, не осознавая его SNI, так как я продолжаю получать неудачное SSL-рукопожатие, и в тот момент, когда SNI отключен, все работает, просто примечание, подключение использование «HttpsURLConnection» работает, поскольку (я полагаю) использует OKHTTP, который также поддерживает SNI.   -  person visual    schedule 22.08.2016


Ответы (2)


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

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

В системе отслеживания ошибок Android есть открытая заявка по этой проблеме.

Также можно протестировать поддержку SNI, подключившись к этому URL-адресу: https://sni.velox.ch/.

person Jcs    schedule 05.05.2011
comment
Привет JCS, Спасибо за помощь. Я попробовал ссылку sni.velox.ch с использованием классов SSLCONTEXT(TLS) и SSLENGINE, доступных в пакете SDK для Android. . Я получаю рукопожатие. Но тот же код не работает на нашем тестовом сервере. Есть ли что-то связанное с сервером? Пожалуйста, помогите мне с этим. - person user736435; 05.05.2011
comment
Я получаю следующую ошибку: Ошибка согласования соединения SSL. java.io.IOException: ошибка рукопожатия SSL: сбой в библиотеке SSL, обычно ошибка протокола Подпрограммы SSL:SSL23_GET_SERVER_HELLO:sslv3 предупреждает об ошибке рукопожатия (external/openssl/ssl/s23_clnt.c:580 0xaf589bac:0x00000000)» - person user736435; 08.05.2011
comment
Кажется, проблема с ответом сервера. Возможно, поддержка SNI сервера не включена. Я предполагаю, что журнал сервера может дать вам больше информации. - person Jcs; 08.05.2011

К счастью, HttpsURLConnection поддерживает SNI с Android 2.3. Один обходной путь, если вам нужно поддерживать Android 2.2 (and older), заключается в настройке альтернативного виртуального хоста на уникальном порту, чтобы было однозначно, какой сертификат сервера возвращать.

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

Просто для информации

Новые версии SSL, в частности TLSv.1.0 and later, поддерживают указание имени сервера (SNI), что позволяет client, чтобы указать предполагаемое имя хоста для сервера, чтобы можно было вернуть правильный сертификат.

person Pravin Divraniya    schedule 16.03.2018