我的一个应用程序上周上线了。当他们尝试与我们的服务器通信时,几乎有10-20%的应用用户正在接收SSL握手中止错误。其他80%的用户都很好,他们可以连接,在测试阶段我们也没有在测试设备上发现这些错误。
应用程序正在使用OkHttp 2.5.0(最新版)以及okio 1.6.0(最新版)
完整的堆栈跟踪 -
javax.net.ssl.SSLException: SSL handshake aborted: ssl=0x64e7c010: I/O error during system call, Connection reset by peer
at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(NativeCrypto.java)
at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:426)
at com.squareup.okhttp.Connection.connectTls(Connection.java:235)
at com.squareup.okhttp.Connection.connectSocket(Connection.java:199)
at com.squareup.okhttp.Connection.connect(Connection.java:172)
at com.squareup.okhttp.Connection.connectAndSetOwner(Connection.java:367)
at com.squareup.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:128)
at com.squareup.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:328)
at com.squareup.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:245)
at com.squareup.okhttp.Call.getResponse(Call.java:267)
at com.squareup.okhttp.Call$ApplicationInterceptorChain.proceed(Call.java:224)
at com.squareup.okhttp.Call.getResponseWithInterceptorChain(Call.java:195)
at com.squareup.okhttp.Call.execute(Call.java:79)
Crashlytics显示这种情况发生在Android 4.3+上。这需要修复,因为在我们的应用程序中,10-20%的用户真的太多了。