当前位置: 首页 > 知识库问答 >
问题:

如何启用TLSv1.3 OkHttp 3.12. x在Android 8/9?

党宇定
2023-03-14

我正在Android 9(Pixel 2设备)上使用OkHttp 3.12.2,并尝试连接到运行OpenSSL 1.1.1的nginx 1.14.0。nginx能够支持TLSv1。我用Ubuntu 18.04上的Firefox 66.0.2、Android 9上的Chrome 73.0和ChromeOS 72.0验证了这一点。

然而,OkHttp总是协商TLSv1.2。我还试图设置RESTRICTED_TLSConnectionSpec,但没有帮助。

我没有找到关于如何获取TLSv1的具体说明。3在Android上工作。我知道只有Android8和9支持TLSv1。3开箱即用;我现在可以接受这个限制。

我从早期TLS迁移中获得的经验是,除了更新所有相关组件之外,我不需要做任何事情。

共有2个答案

闻昊英
2023-03-14

问题很可能是,客户机或证书可能在所有情况下都不支持TLS 1.3,然后会退回。尝试运行SSL测试以验证这一点(它还对移动客户端执行检查,这可能会以不同的方式进行协商)。将OhHttp升级到3.133.14(很快)也可能是一种选择;这是更改日志。即使Android应该支持它,客户端也需要配置:

OkHttpClient client = new OkHttpClient.Builder()
    .connectionSpecs(Arrays.asList(ConnectionSpec.MODERN_TLS))
    .build();

可能的值有:RESTRICTED\u-TLSMODERN\u-TLS和(向后)COMPATIBLE\u-TLS

陈毅
2023-03-14

如官方链接TLSv1所示。wards上的Android 10(Api级别29)支持3。所以要支持TLSv1。3在以前的版本中,我们可以集成conscrypt库。Conscrypt安全提供程序包括用于TLS功能的公共API。为此,我们必须添加依赖项,

dependencies {
  implementation 'org.conscrypt:conscrypt-android:2.2.1'
}

这里我们还需要OkHttp客户端,因为它支持conscrypt。

如OkHttp中所述,

OkHttp使用您平台的内置TLS实现。在Java平台上,OkHttp还支持Conscrypt,它将BoringSSL与Java集成。如果它是第一个安全提供者,OkHttp将使用Conscrypt。

在添加了conscrypt依赖之后,在应用程序类中我们只需要提到,

Security.insertProviderAt(Conscrypt.newProvider(), 1);

这可能有助于提供支持和启用TLS 1.3在较旧的Android版本(API级别

 类似资料:
  • 我想这是一个标准的知识问题,但是是否会以线程形式运行? 我想要的是与生产者/消费者的并发会话,这些会话编写/监听他们的特定队列。我已经尝试通过将连接传递给线程来编写一个自定义线程,但是当我创建生产者时,我遇到了一个错误,“我不能在未注册的会话上启动生产者”。

  • 问题内容: 我安装了Python 3.x(除了Ubuntu上的Python 2.x),然后慢慢开始配对在Python 2.x中使用的模块。 因此,我想知道,应该为Python 2.x和Python 3.x使用pip来简化生活吗? 问题答案: 您应该采取的方法是为Python 3.2安装。 您可以通过以下方式执行此操作: 然后,您可以使用来安装适用于Python 3.2的内容,并使用来安装适用于Py

  • 问题内容: 尝试执行以下行时,仅显示最后两个语句(“ Here is some ERROR”和“ Here is some FATAL”),并且不显示前三个语句。我刚刚开始学习此主题,任何人都可以告诉为什么会这样呢? log4j.property有 问题答案: 您可能在项目中的某个地方有一个log4j.properties文件。在该文件中,您可以配置所需的调试输出级别。请参阅以下示例: 第一行将根

  • 问题内容: 我使用Flickr照片搜索API的JavaScript创建了一个演示。现在,我将其转换为AngularJs。我在互联网上搜索,发现下面的配置。 组态: 服务: 控制器: 问题答案: 你不知道 您请求的服务器必须实现CORS才能从您的网站访问权限中授予JavaScript。您的JavaScript无法授予自己访问其他网站的权限。

  • 问题内容: 标题说说我的问题。我需要将DTO包装到javascript方法回调中。目前,我应要求返回JSON。但是在Ajax中使用此问题,因为我将GET发送到其他域。当然还有治安警察。 我有创建附加提供的想法。有任何示例,链接或建议如何执行。 问题答案: RESTEasy中没有明确支持JSONP,但是在应用程序中启用JSONP的一种简单方法是编写Servlet过滤器。 这里有一些链接可以帮助您编写

  • 问题内容: 我正在尝试使用jquery提出跨源请求,但它一直被消息拒绝 XMLHttpRequest无法加载http:// …请求的资源上不存在“ Access-Control-Allow-Origin”标头。因此,不能访问Origin…。 我正在使用flask,heroku和jquery 客户端代码如下所示: 在heroku方面,我正在使用flask,就像这样 问题答案: 当我部署到Heroku