Android SSLHandShakeException : Handschake failed on Android 6. 0.1

标签 android ssl sslhandshakeexception

自一周以来,我在执行请求时收到此 SSLHandschakeException。一直在网上搜索,没有找到解决问题的方法。该代码曾经可以工作,并且在没有更改的情况下停止工作。 SSL 证书有效,可在浏览器中使用,也可在 Android 设备上使用。但不在应用程序中。

我在装有 Android 6.0.1 的 Nexus 5 上运行该应用程序。该应用程序使用 Volley 发出请求,只是普通的东西。

最奇怪的是,当从设备上删除该应用程序并运行该应用程序时,它可以正常工作。但之后就没有了。

完整的堆栈跟踪:

com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: Handshake failed
      at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:151)
      at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112)
    Caused by: javax.net.ssl.SSLHandshakeException: Handshake failed
      at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:396)
      at com.android.okhttp.internal.http.SocketConnector.connectTls(SocketConnector.java:103)
      at com.android.okhttp.Connection.connect(Connection.java:143)
      at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:185)
      at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
      at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
      at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
      at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
      at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:437)
      at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:388)
      at com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:501)
      at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
      at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java)
      at com.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:110)
      at com.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:96)
      at com.android.volley.NetworkDispatcher.run(NetworkDispatcher.java:112) 
    Suppressed: javax.net.ssl.SSLHandshakeException: Handshake failed
      ... 16 more
      Suppressed: javax.net.ssl.SSLHandshakeException: Handshake failed
        ... 16 more
      Suppressed: javax.net.ssl.SSLHandshakeException: Handshake failed
        ... 16 more
      Caused by: javax.net.ssl.SSLProtocolException: SSL handshake terminated: ssl=0xab1e5c00: Failure in SSL library, usually a protocol error
    error:100c543e:SSL routines:ssl3_read_bytes:TLSV1_ALERT_INAPPROPRIATE_FALLBACK (external/boringssl/src/ssl/s3_pkt.c:972 0xab4705c0:0x00000001)
      at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
      at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:324)
        ... 15 more
    Caused by: javax.net.ssl.SSLProtocolException: SSL handshake terminated: ssl=0xab1e5c00: Failure in SSL library, usually a protocol error
    error:100c543e:SSL routines:ssl3_read_bytes:TLSV1_ALERT_INAPPROPRIATE_FALLBACK (external/boringssl/src/ssl/s3_pkt.c:972 0xab4705c0:0x00000001)
      at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
      at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:324)
      ... 15 more
    Caused by: javax.net.ssl.SSLProtocolException: SSL handshake terminated: ssl=0xab1e5c00: Failure in SSL library, usually a protocol error
    error:100c543e:SSL routines:ssl3_read_bytes:TLSV1_ALERT_INAPPROPRIATE_FALLBACK (external/boringssl/src/ssl/s3_pkt.c:972 0xab4705c0:0x00000001)
      at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
      at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:324)
      ... 15 more
    Caused by: javax.net.ssl.SSLProtocolException: SSL handshake terminated: ssl=0xab1e5c00: Failure in SSL library, usually a protocol error
    error:100c5410:SSL routines:ssl3_read_bytes:SSLV3_ALERT_HANDSHAKE_FAILURE (external/boringssl/src/ssl/s3_pkt.c:972 0xab4705c0:0x00000001)
    error:100c009f:SSL routines:ssl3_get_server_hello:HANDSHAKE_FAILURE_ON_CLIENT_HELLO (external/boringssl/src/ssl/s3_clnt.c:750 0xab23259f:0x00000000)
      at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
      at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:324)
      ... 15 more

最佳答案

如此处解释:https://github.com/square/okhttp/issues/1582#issuecomment-97104082

您可能处于以下情况之一:

  1. You go to a site called https://example.com and you end up on a site that to you appears to be on https://example.com but is giving you a certificate for https://no-example.com. OkHttp will correctly fail the connection. In a browser like Chrome you'd see a warning in the console along the lines of "This isn't the page you think it is"

  2. Other exceptions showed that a certificate was provided by the server, but it wasn't trusted because the root certificate wasn't on the client device (or may have expired)

您需要调试更多 SSL 问题,可能是由于服务器上的证书配置错误或客户端上的证书丢失/过期所致。您可以尝试遵循类似于 this 的内容当你明白你的问题在哪里时

关于Android SSLHandShakeException : Handschake failed on Android 6. 0.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44041982/

相关文章:

url - GitHub 如何使用 URL 中没有 "www"的 SSL?

java - 导入证书后仍然出现 SunCertPathBuilderException

ssl - javax.net.ssl.SSLHandshakeException : Remote host closed connection during handshake in JMeter的解决方案

c++ - 在与 Asio 和 OpenSSL 握手期间,*某些*网站上出现错误的版本号错误

java - Android:对话框在线程中崩溃?

java - 如何防止 View 重叠?

python - Boto 在 ssl.c 中不断崩溃

java - java NIO SSO 处理器中的空指针

android - Gradle 和多项目结构

如果我使用 dpi 子文件夹,Android Studio 无法识别 Android 绘图