Перейти к содержанию

Проверка SSL сертификатов сервера при установке Websocket соединения

По умолчанию, при установке безопасного Websocket соединения с сервером, Android SDK отдает проверку SSL сертификата сервера на уровень системы. В свою очередь, система сверяет сертификат с записями в хранилище сертификатов.

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

Не рекомендуется: Доверять всем сертификатам

В сборке 1.1.0.18 добавлена опция сессии SessionOptions.trustAllCertificates (по умолчанию false). Чтобы принимать любые, в том числе самоподписанные сертификаты при установке соединения, необходимо установить данную опцию в true

SessionOptions sessionOptions = new SessionOptions(url);
sessionOptions.trustAllCertificates(true);

Пример использования:

code

private CheckBox mTrustAllCer;
...
mTrustAllCer = (CheckBox) findViewById(R.id.trust_all_certificates_default);
...
/**
    * The options for connection session are set.
    * WCS server URL is passed when SessionOptions object is created.
    * SurfaceViewRenderer to be used to display video from the camera is set with method SessionOptions.setLocalRenderer().
    * SurfaceViewRenderer to be used to display preview stream video received from the server is set with method SessionOptions.setRemoteRenderer().
    */
SessionOptions sessionOptions = new SessionOptions(url);
sessionOptions.setLocalRenderer(localRender);
sessionOptions.setRemoteRenderer(remoteRender);
sessionOptions.trustAllCertificates(mTrustAllCer.isChecked());

Warning

В настоящее время правила безопасности Google Play не позволяют опубликовать приложение с таким кодом. Используйте следующий способ.

Рекомендуется: Добавить самоподписанный сертификат в ресурсы приложения

В сборке 1.1.0.56 реализация класса X509TrustManager удалена из кода Android SDK. При необходимости, самоподписанные сертификаты для тестирования должны быть добавлены в ресурсы приложения. Также, в приложение должен быть добавлен файл настройки network_security_config.xml со ссылкой на файл сертификата из ресурсов:

code

<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="@raw/my_ca"/>
            <certificates src="system"/>
        </trust-anchors>
    </base-config>
</network-security-config>