SSL и Android

R2D2

Member
Добрый день, некоторые наши тестовые пользователи сообщают что у них нет соединения нашего приложения с сервисом. Хотя интернет на устройстве присутствует.
Как правило Android режет незашифрованный трафик, если правила безопасности соединения не указаны в манифесте. Конечно, у нас приобретен ssl сертификат и интегрирован в wcs, а общение приложения с wcs происходит через wss. Однако, есть подозрение, что на каком то этапе шифрование отпадывает и на каких то телефонах это прокатывает, а на каких то нет....
К сожалению данную ситуацию на нашей тестовой базе мы воспроизвести не можем, но пользователи у которых возник данный баг имеют телефоны Xiaomi Note 4 и одна из моделей Honor (Причем на нашем тестовом Honor - ситуация не воспроизводится). Соединение было как через wifi, так и через мобильную сеть - результат тот же.
1. Есть ли возможность узнать под Android - текущее соединение с wss в зашифрованом виде или нет?
2. Из за чего еще не может быть соединения приложения под андройд с wss?
 
Last edited:

Max

Administrator
Staff member
Добрый день.
1. Есть ли возможность узнать под Android - текущее соединение с wss в зашифрованом виде или нет?
Только анализом трафика в Wirashark и т.п.
2. Из за чего еще не может быть соединения приложения под андройд с wss?
В сборках до 1.1.0.18 у нас вообще должны были проходить проверку любые сертификаты. Начиная с этой сборки, добавлен параметр сессии sessionOptions.trustAllCertificates, который по умолчанию проверку всех сертификатов отдает системе. Если установить
Code:
SessionOptions sessionOptions = new SessionOptions(url);
sessionOptions.trustAllCertificates(true);
то проверку будут проходить любые сертификаты, в том числе self-signed
Подробнее здесь.
Попробуйте обновить Android SDK и проверить на проблемных телефонах.
 

R2D2

Member
На проблемных телефонах в приложениях использовалась библиотека 1.0.1.70, а минимальный SDK был установлен 19
 

Max

Administrator
Staff member
На проблемных телефонах в приложениях использовалась библиотека 1.0.1.70, а минимальный SDK был установлен 19
По портированию фикса SSL в Android SDK 1.0 есть тикет WCS-3047
 

Max

Administrator
Staff member
В сборке Android SDK 1.0.1.73 добавлена опция сессии SessionOptions.trustAllCertificates аналогично Android SDK 1.1. Подробнее здесь.
 

R2D2

Member
Недавно в логах увидели появление ошибок связанных с ssl,
кроме этого заметили что сборке 1.1.0.59 отсуствует sessionOptions.trustAllCertificates(false);
в документации есть. https://docs.flashphoner.com/pages/viewpage.action?pageId=37126228
куда исчезла trustAllCertificates(false) и что вместо этого?
 

Max

Administrator
Staff member
Эта документация относится к Android SDK 1.0. В Android SDK 1.1 эта опция, как и весь код класса X509TrustManager, была удалена в связи с тем, что приложения с использованием Android SDK 1.1 перестали проходить проверку при публикации в Google Play, посокльку код этого класса был признан небезопасным. В случае, если необходимо использовать самоподписанные сертификаты, эти сертификаты должны быть добавлены в ресурсы приложения.
 

R2D2

Member
Добрый день. У нас опять проблема с SSL.
Мы обновили SSL сертфикат через веб морду, тесты в веб морде проходят стримы через wss публикуются и просматриваются. Однако пользователи на Android не могут зайти через WSS.
Почему???
 

Max

Administrator
Staff member
Если сертификат покупался у провайдера из РФ, там может использоваться корневой сертификат, которого нет в списке Certificate Store на уровне системы Android. Проверьте, могут ли пользователи установить WSS соединение с тех же Android устройств из браузера. Если нет, то проблема в корневом сертификате. В этом случае нужно либо обновлять корневой сертификат на устройстве, либо добавлять сертификаты сервера в ресурсы приложения, как самоподписанные: Рекомендуется: Добавить самоподписанный сертификат в ресурсы приложения
 
Top