SSL 握手无法从 Android 客户端连接到 Google
SSL Handshake fails connecting to Google from Android client
我使用的是标准代码
URL url = new URL(sb.toString());
conn = (HttpsURLConnection) url.openConnection();
InputStreamReader in = new InputStreamReader(conn.getInputStream());
从 Android 客户端连接到 Google 个地点 API。但是我得到这个例外:
02-24 02:29:35.535: E/AdapterClass(3122): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:374)
02-24 02:29:35.535: E/AdapterClass(3122): at com.android.okhttp.Connection.upgradeToTls(Connection.java:197)
02-24 02:29:35.535: E/AdapterClass(3122): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xaf85c200: Failure in SSL library, usually a protocol error
02-24 02:29:35.535: E/AdapterClass(3122): error:1407743E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert inappropriate fallback (external/openssl/ssl/s23_clnt.c:765 0xac3f9e61:0x00000000)
有什么想法吗?我注意到这只发生在我使用 OkHttp 请求时,但不是针对这个特定请求,而是在我应用程序的其他部分。那么为什么 okhttp 会在这里发挥作用(如堆栈跟踪所示)?
这个问题通过切换到 OkHttp 的最新版本(目前为 2.2)得到解决(我之前使用的是 1.6)。
我使用的是标准代码
URL url = new URL(sb.toString());
conn = (HttpsURLConnection) url.openConnection();
InputStreamReader in = new InputStreamReader(conn.getInputStream());
从 Android 客户端连接到 Google 个地点 API。但是我得到这个例外:
02-24 02:29:35.535: E/AdapterClass(3122): at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:374)
02-24 02:29:35.535: E/AdapterClass(3122): at com.android.okhttp.Connection.upgradeToTls(Connection.java:197)
02-24 02:29:35.535: E/AdapterClass(3122): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xaf85c200: Failure in SSL library, usually a protocol error
02-24 02:29:35.535: E/AdapterClass(3122): error:1407743E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert inappropriate fallback (external/openssl/ssl/s23_clnt.c:765 0xac3f9e61:0x00000000)
有什么想法吗?我注意到这只发生在我使用 OkHttp 请求时,但不是针对这个特定请求,而是在我应用程序的其他部分。那么为什么 okhttp 会在这里发挥作用(如堆栈跟踪所示)?
这个问题通过切换到 OkHttp 的最新版本(目前为 2.2)得到解决(我之前使用的是 1.6)。