Android-приложение - javax.net.ssl.SSLHandshakeException: не найдена доверенная привязка для пути сертификации - стандартный браузер Android работает без проблем - PullRequest
3 голосов
/ 28 марта 2019

Мы используем цепной сертификат на нашем сервере, но когда мы пытаемся установить соединение с приложением Android, используя Retrofit или HttpsURLConnection, он всегда завершается ошибкой с «javax.net.ssl.SSLHandshakeException: доверенная привязка для пути сертификации не найдена ».

Стандартный браузер Android, а также рабочий стол сайта или приложение iOS работают без проблем, поэтому мы предполагаем, что SSL на сервере настроен правильно.

Наш сервер (nginx) настроен на возврат только (.crt) сертификата, когда мы изменяем его настройки, чтобы вернуть сертификат с полной цепью (fullchain.pem), наше приложение начинает работать, но это не так, как мы этого хотим работать.

Что мы делаем не так? Спасибо за любую помощь.

PS: мы не хотим отключать проверку цепочки сертификатов SSL

com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:361)
com.android.okhttp.Connection.connectTls(Connection.java:235)
com.android.okhttp.Connection.connectSocket(Connection.java:199)
com.android.okhttp.Connection.connect(Connection.java:172)
com.android.okhttp.Connection.connectAndSetOwner(Connection.java:367)
com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:130)
com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:247)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126)
com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:89)
com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java)
com.android.tools.profiler.support.network.httpurl.TrackedHttpURLConnection.connect(TrackedHttpURLConnection.java:154)
com.android.tools.profiler.support.network.httpurl.TrackedHttpURLConnection.tryConnect(TrackedHttpURLConnection.java:8
com.android.tools.profiler.support.network.httpurl.TrackedHttpURLConnection.trackResponse(TrackedHttpURLConnection.jav
com.android.tools.profiler.support.network.httpurl.TrackedHttpURLConnection.tryTrackResponse(TrackedHttpURLConnection.
com.android.tools.profiler.support.network.httpurl.TrackedHttpURLConnection.getResponseCode(TrackedHttpURLConnection.j
com.android.tools.profiler.support.network.httpurl.HttpsURLConnection$.getResponseCode(HttpsURLConnection$.java:146)

1 Ответ

0 голосов
/ 28 марта 2019

добавьте это в свой build.gradle:

implementation 'com.google.android.gms:play-services-auth:11.8.0'

добавить это перед запросом сети:

try {
            ProviderInstaller.installIfNeeded(getApplicationContext());
        } catch (GooglePlayServicesRepairableException e) {
            e.printStackTrace();
        } catch (GooglePlayServicesNotAvailableException e) {
            e.printStackTrace();
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...