【发布时间】:2023-03-14 15:51:01
【问题描述】:
首先我想说我是 stackoverflow 的新手,并且在 Android 上也比较新鲜,所以如果我犯了任何错误,请给我一些最好的建议并帮助我成为最好的程序员。
所以我的问题在标题中定义,但我可以在这里解释更多。
我正在使用 ImageLoader,我正在从 URL 加载图像 https://s3.ap-south-1.amazonaws.com/aolmislogs/buyer/payment_proof/1.jpg
但在我的 RecyclerView 中没有显示图像并且发生 SSL 握手异常。
当我从 https 中删除“s”并从 URL 加载图像时 http://s3.ap-south-1.amazonaws.com/aolmislogs/buyer/payment_proof/1.jpg
它正在工作。
我想知道为什么会发生这种情况以及如果我想使用带有“https://”的 URL 的解决方案是什么。我该如何解决这个异常,请给我这个异常的最佳解决方案。
http://s3.ap-south-1.amazonaws.com/aolmislogs/buyer/payment_proof/2.jpg 08-17 12:57:15.325 2095-2095/com.kmsg.aolmis.buyer W/ImageLoader: 试试 初始化之前已经初始化的 ImageLoader。 使用新的配置调用重新初始化 ImageLoader ImageLoader.destroy() 首先。 08-17 12:57:15.334 2095-2095/com.kmsg.aolmis.buyer E/libEGL:调用 OpenGL ES API 没有当前上下文(每个线程记录一次)08-17 12:57:15.675 2095-2911/com.kmsg.aolmis.buyer E/ImageLoader: java.security.cert.CertPathValidatorException:信任锚 找不到证书路径。 javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:信任锚 找不到证书路径。 在 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.getResponse(HttpURLConnectionImpl.java:405) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:521) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) 在 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromNetwork(BaseImageDownloader.java:117) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:88) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.downloadImage(LoadAndDisplayImageTask.java:291) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryCacheImageOnDisk(LoadAndDisplayImageTask.java:274) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:230) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:136) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 在 java.lang.Thread.run(Thread.java:760) 引起:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:信任锚 找不到证书路径。 在 com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:549) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:508) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:401) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:375) 在 com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:304) 在 android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94) 在 android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88) 在 com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:178) 在 com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:596) 在 com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(本机方法) 在 com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357) 在 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.getResponse(HttpURLConnectionImpl.java:405) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:521) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) 在 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromNetwork(BaseImageDownloader.java:117) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:88) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.downloadImage(LoadAndDisplayImageTask.java:291) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryCacheImageOnDisk(LoadAndDisplayImageTask.java:274) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:230) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:136) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 在 java.lang.Thread.run(Thread.java:760) 原因:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。 在 com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:549) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:508) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:401) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:375) 在 com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:304) 在 android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94) 在 android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88) 在 com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:178) 在 com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:596) 在 com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native 方法) 在 com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357) 在 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.getResponse(HttpURLConnectionImpl.java:405) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:521) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) 在 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromNetwork(BaseImageDownloader.java:117) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:88) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.downloadImage(LoadAndDisplayImageTask.java:291) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryCacheImageOnDisk(LoadAndDisplayImageTask.java:274) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:230) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:136) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 在 java.lang.Thread.run(Thread.java:760) 08-17 12:57:15.951 2095-2911/com.kmsg.aolmis.buyer E/ImageLoader: java.security.cert.CertPathValidatorException:信任锚 找不到证书路径。 javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:信任锚 找不到证书路径。 在 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.getResponse(HttpURLConnectionImpl.java:405) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:521) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) 在 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromNetwork(BaseImageDownloader.java:117) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:88) 在 com.nostra13.universalimageloader.core.decode.BaseImageDecoder.getImageStream(BaseImageDecoder.java:98) 在 com.nostra13.universalimageloader.core.decode.BaseImageDecoder.decode(BaseImageDecoder.java:74) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:265) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:238) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:136) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 在 java.lang.Thread.run(Thread.java:760) 引起:java.security.cert.CertificateException:java.security.cert.CertPathValidatorException:信任锚 找不到证书路径。 在 com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:549) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:508) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:401) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:375) 在 com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:304) 在 android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94) 在 android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88) 在 com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:178) 在 com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:596) 在 com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(本机方法) 在 com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357) 在 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.getResponse(HttpURLConnectionImpl.java:405) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:521) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) 在 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromNetwork(BaseImageDownloader.java:117) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:88) 在 com.nostra13.universalimageloader.core.decode.BaseImageDecoder.getImageStream(BaseImageDecoder.java:98) 在 com.nostra13.universalimageloader.core.decode.BaseImageDecoder.decode(BaseImageDecoder.java:74) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:265) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:238) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:136) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 在 java.lang.Thread.run(Thread.java:760) 原因:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。 在 com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:549) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrustedRecursive(TrustManagerImpl.java:508) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:401) 在 com.android.org.conscrypt.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:375) 在 com.android.org.conscrypt.TrustManagerImpl.getTrustedChainForServer(TrustManagerImpl.java:304) 在 android.security.net.config.NetworkSecurityTrustManager.checkServerTrusted(NetworkSecurityTrustManager.java:94) 在 android.security.net.config.RootTrustManager.checkServerTrusted(RootTrustManager.java:88) 在 com.android.org.conscrypt.Platform.checkServerTrusted(Platform.java:178) 在 com.android.org.conscrypt.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:596) 在 com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native 方法) 在 com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:357) 在 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.getResponse(HttpURLConnectionImpl.java:405) 在 com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:521) 在 com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105) 在 com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStreamFromNetwork(BaseImageDownloader.java:117) 在 com.nostra13.universalimageloader.core.download.BaseImageDownloader.getStream(BaseImageDownloader.java:88) 在 com.nostra13.universalimageloader.core.decode.BaseImageDecoder.getImageStream(BaseImageDecoder.java:98) 在 com.nostra13.universalimageloader.core.decode.BaseImageDecoder.decode(BaseImageDecoder.java:74) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:265) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:238) 在 com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:136) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 在 java.lang.Thread.run(Thread.java:760)
【问题讨论】:
-
您设备上的时间和日期是否正确?
-
是的,时间和日期在我的设备中是正确的......但是如何通过时间和日期来影响这一点。
-
ssl证书在一定时间内有效。
-
好的,但是我的设备中的时间和日期是正确的。 @VladyslavMatviienko
-
还有其他错误详情吗?比如握手失败的原因?
标签: android ssl-certificate universal-image-loader