Я хотел бы узнать о поддержке расширения SSL/TLS Server Name Indication (SNI) в Android SDK.
Поддержка Android SSL - SNI
Ответ 1
Насколько я знаю, в Android SDK есть поддержка частичной. Текущая ситуация следующая:
- Так как TLS-соединение Gingerbread с API-интерфейсом
HttpsURLConnection
поддерживает SNI. - Клиентская библиотека Apache HTTP, поставляемая с Android, не поддерживает SNI
- Веб-браузер Android не поддерживает SNI ни с помощью API-интерфейса клиента Apache HTTP.
Существует открытый открытый билет по этой проблеме в Android-трекер.
Также можно протестировать поддержку SNI, установив соединение с этим URL-адресом: https://sni.velox.ch/
Ответ 2
Вы также можете использовать SNI с библиотекой HttpClient: http://blog.dev001.net/post/67082904181/android-using-sni-with-apache-httpclient-library
Ответ 3
К счастью, HttpsURLConnection поддерживает SNI
с Android 2.3
. Одним из способов решения проблемы, если вам нужно поддерживать Android 2.2 (and older)
является настройка альтернативного виртуального хоста на уникальном порту, чтобы он недвусмысленно возвращал сертификат сервера.
Для получения дополнительной информации см. Эту ссылку. Надеюсь, это поможет будущим пользователям.
Только для информации
Более поздние версии SSL, в частности
TLSv.1.0 and later
, поддерживаютTLSv.1.0 and later
имени сервера (SNI), которая позволяет клиенту SSL указывать предполагаемое имя хоста на сервере, чтобы можно было вернуть правильный сертификат.