Поддержка Android SSL - SNI

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

Ответ 1

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

  • Так как TLS-соединение Gingerbread с API-интерфейсом HttpsURLConnection поддерживает SNI.
  • Клиентская библиотека Apache HTTP, поставляемая с Android, не поддерживает SNI
  • Веб-браузер Android не поддерживает SNI ни с помощью API-интерфейса клиента Apache HTTP.

Существует открытый открытый билет по этой проблеме в Android-трекер.

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

Ответ 3

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

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

Только для информации

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