【问题标题】:HTTPS support for Volley Android networking libraryVolley Android 网络库的 HTTPS 支持
【发布时间】:2014-04-29 03:33:45
【问题描述】:

我有一个项目对 HTTPS 后端进行 REST 调用 它在某些设备上运行良好,而在其他设备上则中断。

这是我得到的错误:

com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException:SSL 握手中止: ssl=0x78004ee8:SSL 库失败,通常是协议错误 错误:140770FCSL 例程SL23_GET_SERVER_HELLO:未知协议 (外部/openssl/ssl/s23_clnt.c:766 0x731f5d5c:0x00000000)

查看 Volley 文档,他们提到

“您可以包含自己的 HTTPStack(用于处理 SSL 连接 [...])”

有人为 volley 做过这个吗?如果可以,请分享您的更改吗?

注意:证书由设备可信证书中已存在的有效实体签署。

【问题讨论】:

标签: android http rest https android-volley


【解决方案1】:

这是我的解决方案:

在类Volley在方法中

public static RequestQueue newRequestQueue(Context context, HttpStack stack)

找到以下文字:

stack = new HurlStack();

然后将这一行改为:

stack = new HurlStack(null, createSslSocketFactory());

其中方法createSslSocketFactory()定义如下:

private static SSLSocketFactory createSslSocketFactory() {
    TrustManager[] byPassTrustManagers = new TrustManager[]{new X509TrustManager() {
        public X509Certificate[] getAcceptedIssuers() {
            return new X509Certificate[0];
        }

        public void checkClientTrusted(X509Certificate[] chain, String authType) {
        }

        public void checkServerTrusted(X509Certificate[] chain, String authType) {
        }
    }};

    SSLContext sslContext = null;
    SSLSocketFactory sslSocketFactory = null;
    try {
        sslContext = SSLContext.getInstance("TLS");
        sslContext.init(null, byPassTrustManagers, new SecureRandom());
        sslSocketFactory = sslContext.getSocketFactory();

    } catch (NoSuchAlgorithmException e) {
        e.printStackTrace();
        Log.e(TAG, StringUtils.EMPTY, e);
    } catch (KeyManagementException e) {
        Log.e(TAG, StringUtils.EMPTY, e);
    }

    return sslSocketFactory;
}

我知道这并不安全,但我仅将其用于测试目的。您可以通过仅接受来自您的服务器的证书来提高安全性。

【讨论】:

  • 这在我的项目中不起作用。它在说 Request.finish:
  • @droid_dev: 对于getSSLSocketFactory,可以参考my answer here。希望这会有所帮助!
猜你喜欢
  • 2013-05-15
  • 2015-06-07
  • 2015-12-16
  • 2022-01-20
  • 2017-06-25
  • 2017-09-10
  • 2015-11-04
相关资源
最近更新 更多