android app - javax.net.ssl.SSLHandshakeException:未找到证书路径的信任锚 - 标准Android浏览器工作没有任何问题

问题描述 投票:3回答:1

我们在服务器上使用链式证书,但是当我们尝试使用Retrofit或HttpsURLConnection建立与Android应用程序的连接时,它始终会失败并显示“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)
java android ssl-certificate sslhandshakeexception
1个回答
-1
投票

将此添加到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();
        }
© www.soinside.com 2019 - 2024. All rights reserved.