【问题标题】:SSL Handshake Exception Occurs when i load Image with Imageloader当我使用 Imageloader 加载图像时发生 SSL 握手异常
【发布时间】: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


【解决方案1】:

那个服务器没有SSL,这就是为什么你需要使用http协议,而不是https

更新

仔细查看您的链接后,我发现您缺少破折号

来自

https://s3.ap-south1.amazonaws.com/...

到

https://s3.ap-south-1.amazonaws.com/...

您的网址现在可以正常使用:https://s3.ap-south-1.amazonaws.com/aolmislogs/buyer/payment_proof/1.jpg

【讨论】:

  • 那我该怎么办...??
  • 对不起,但这不是正确的答案...我在这里写错了,但不是在我检查的代码中...现在我也在这里更新了我写错的...我的错误很抱歉,但它不是正确的答案...
猜你喜欢
  • 2011-04-16
  • 1970-01-01
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-05
  • 2019-03-14
相关资源
最近更新 更多