Android 7.0 / Самозаверяющий сертификат: «Не найдена доверенная привязка для пути сертификации» - PullRequest
0 голосов
/ 27 августа 2018

Мое приложение обращается к URL-адресу, защищенному самозаверяющим сертификатом.

Версия 1 :

Я скопировал файл «selfsigned.crt» на телефон, затем установил сертификат через Security - Other Security Settings - Install from device storage с помощью credential use: VPN and apps, что также заставило меня установить PIN-код.

Впоследствии я добавил это в манифест:

android:networkSecurityConfig="@xml/network_security_config"

... и создал соответствующий файл network_security_config.xml в папке "res / xml" (как предложено здесь ):

<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user"/>
        </trust-anchors>
    </debug-overrides>
    <base-config>
        <trust-anchors>
            <certificates src="user"/>
        </trust-anchors>
    </base-config>
</network-security-config>

Проблема в том, что мое приложение не может подключиться к URL-адресу, как это, и выдает только исключение:

javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.

Версия 2 :

Если я скопирую файл «selfsigned.crt» в папку «res / raw» и добавлю его в файл xml:

<certificates src="@raw/selfsigned"/>

это успешно. Но это также означает, что мне придется обновить приложение, если сертификат изменится.

Вопрос:

Я что-то пропустил в версии 1, возможно, вам нужно было создать собственный KeyStore / TrustManager (как описано здесь ), даже когда вы используете файл xml?

Кстати, в настоящее время я использую javax.net.ssl.HttpsURLConnection вместо "basic" URLConnection для открытия соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...