gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 21:27:56 24 4
gpt4 key购买 nike

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

但是,OkHttp 始终协商 TLSv1.2。我还尝试设置 RESTRICTED_TLS ConnectionSpec,但没有帮助。

我没有找到有关如何在 Android 上运行 TLSv1.3 的具体说明。我知道只有 Android 8 和 9 开箱即用地支持 TLSv1.3;我现在对这个限制没问题。

我从早期 TLS 迁移中获得的经验是,除了更新所有涉及的组件之外,我无需执行任何操作。

最佳答案

如官方所示link ,Android 10(Api 级别 29)起支持 TLSv1.3。因此,为了在以前的版本中支持 TLSv1.3,我们可以集成 conscrypt图书馆。 Conscrypt 安全提供程序包含用于 TLS 功能的公共(public) API。为此,我们必须添加依赖项,

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

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

OkHttp 中所述,

OkHttp uses your platform’s built-in TLS implementation. On Java platforms OkHttp also supports Conscrypt, which integrates BoringSSL with Java. OkHttp will use Conscrypt if it is the first security provider.

添加 conscrypt 依赖项后,在应用程序类中我们只需提及,

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

这有助于在旧版 Android 版本(Api 级别 <29)中提供支持并启用 TLS 1.3。

关于android - 如何在 Android 8/9 上为 OkHttp 3.12.x 启用 TLSv1.3?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55539513/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com