android 4. *<

时间:2016-08-23 23:17:45

标签: android https retrofit network-protocols okhttp

我正在使用okhttp v 2.4.0和retrofit v1.9.0来发出https请求,其中服务器仅使用Protocol TLSv1.2,我收到错误:

javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb8e6cf68: Failure in SSL library, usually a protocol error
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x971fb990:0x00000000)
  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:448)
  at com.squareup.okhttp.internal.http.SocketConnector.connectTls(SocketConnector.java:103)
  at com.squareup.okhttp.Connection.connect(Connection.java:143)
  at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:185)
  at com.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
  at com.squareup.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:341)
  at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330)
  at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248)
  at com.squareup.okhttp.Call.getResponse(Call.java:273)
  at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:230)
  at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:201)
  at com.squareup.okhttp.Call.execute(Call.java:81)
  at retrofit.client.OkClient.execute(OkClient.java:53)
  at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:326)
  at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
  at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
  at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
  at retrofit.Platform$Android$2$1.run(Platform.java:142)
  at java.lang.Thread.run(Thread.java:841)
Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb8e6cf68: Failure in SSL library, usually a protocol error
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x971fb990:0x00000000)
  at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
  at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:405)

我从这里尝试了很多东西,但没有任何作用,我尝试使用SocketFactory设置协议,如下所示:https://blog.dev-area.net/2015/08/13/android-4-1-enable-tls-1-1-and-tls-1-2/

当服务器支持TLSv1,TLSv1.1,TLSv1.2,SSLv3时它起作用,但是当它被删除并且只让TLSv1.2它停止工作时,所以我尝试使用NoSSLv3Factory类作为许多答案在这里很难过在stackoverflow中,但也没有成功,我使用的NoSSLv3方法就是那个:How to disable SSLv3 in android for HttpsUrlConnection?

我无法解决的问题是,如果服务器不再使用该协议并且我将其从okhttp客户端删除,并且为什么它在Android 4.4.2上不起作用,我一直收到SSLv3错误的原因如果网站:https://www.ssllabs.com/ssltest表示4.4.2+与图片所示相同

enter image description here

如果有人有任何想法,我可以使用一些帮助

0 个答案:

没有答案