java - 使用 Android WebViewClient 启用特定 SSL 协议(protocol)

标签 java android ssl https webviewclient

我的应用程序使用 WebViewClient 与服务器建立 SSL 连接。 服务器配置为仅接受 TLSv1.1 及以上协议(protocol)。

  1. 在设备上使用 Android WebViewClient 时,如何检查哪些 SSL 协议(protocol) a) 受支持和 b) 默认启用。
  2. 如何为我的应用程序中使用的 Android WebViewClient 实例启用特定 SSL 协议(protocol)。

在其中一台运行 Android 4.3 的测试设备上, WebViewClient 抛出 onReceivedError 回调,描述如下:

"Failed to perform SSL handshake"

Chrome日志如下:

01-29 15:58:00.073 5486 5525 W chromium_net: external/chromium/net/http/http_stream_factory_impl_job.cc:865: [0129/155800:WARNING:http_stream_factory_impl_job.cc(865)] Falling back to SSLv3 because host is TLS intolerant: 10.209.126.125:443 01-29 15:58:00.083 5486 5525 E chromium_net: external/chromium/net/socket/ssl_client_socket_openssl.cc:792: [0129/155800:ERROR:ssl_client_socket_openssl.cc(792)] handshake failed; returned 0, SSL error code 5, net_error -107 

我的应用程序还使用 HttpClientHttpsUrlConnection 类来设置 SSL 连接。在使用这些类时,我能够使用 SSLSocket API 来启用特定协议(protocol)。 http://developer.android.com/reference/javax/net/ssl/SSLSocket.html#setEnabledProtocols(java.lang.String[])

我需要对 WebViewClient 做同样的事情。

最佳答案

根据文档,在 Android < 4.3 的 WebView 中不可能支持 TLS 1.0。对于 Android 4.4,它默认是禁用的。

查看此图表以了解不同浏览器对 TLS 1.0 的支持:https://en.wikipedia.org/wiki/Transport_Layer_Security#Web_browsers

关于java - 使用 Android WebViewClient 启用特定 SSL 协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28329652/

相关文章:

java - 递归地找到二叉搜索树中每个节点的总深度?

java - 使用日期对 String[] 进行排序

java - 这样的编程风格是不是太多了?

java - 在 Apache POI 中使用 WordToHtmlConverter 转换器

android相机获取光传感器值

php - SSL 子域重定向到主域

android - 如何在Android map 上叠加png图片并指定四个 anchor

Android:管理不同的服务器 URL 以进行开发和发布

google-app-engine - 使用和不使用 SSL 和套接字的 GAE 和 urllib2.py 错误 - TypeError : __init__() got an unexpected keyword argument 'context'

java - 使用 SSLEngine 在 NIO SSL 握手过程中抛出异常