Hal*_*and 2 ssl android react-native
我正在制作一个具有minSdkVersion16 (Android 4.1)的 React Native 应用程序。它向服务器已禁用 TLS 1.0 的 HTTPS 页面发出请求。根据我的理解,Android 4.X 具有 TLS 1.1/1.2 功能,但需要专门调用它们。我发现有几个人声称要解决这个问题,但那些看起来像是纯 Java 解决方案。例如:
即使说了这么多,我还是无法理解,我想知道的是:
我看到这个提交似乎是一个可行的解决方案,但它确实侵入了 React Native 源代码,我希望将来不会有可能的冲突。我还看到您可以创建一个 customSSLSocketFactory,但是如何通过 React Native 使用该工厂发出所有请求?我还听说在某些情况下您可能需要更新设备 SSL 版本,但如果我无法为我的请求调用 TLS 1.1/1.2,那并没有真正的帮助。
在无数次尝试解决之后,只有一种方法对我有用。本质上,您需要从 Google 添加一个 Java 安全包,以在旧的 Android 版本 (< 5.0) 上启用 TLSv1/ TLSv1.1/ TLSv1.2。这也将增加对 TLSv1.3 的支持并增加 apk 的大小,但我想我们将不得不忍受它。
将包添加到app/build.gradle:
implementation 'org.conscrypt:conscrypt-android:2.1.0'
Run Code Online (Sandbox Code Playgroud)
更新MainApplication.java以使用新的安全提供程序:
@Override
public void onCreate() {
super.onCreate();
Security.insertProviderAt(new org.conscrypt.OpenSSLProvider(), 1);
//...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2240 次 |
| 最近记录: |