【问题标题】:Should we use google's security provider with OkHttp?我们应该在 OkHttp 中使用 google 的安全提供程序吗?
【发布时间】:2015-05-04 16:00:11
【问题描述】:

我们在 Android 项目中使用 okhttp 与我们的 API 通信;所有通信都使用 SSL/TLS 加密,我们的服务器可以使用 SPDY。我们还在Google Play Services 中链接了融合位置提供程序和其他一些功能。

我们目前未使用的部分 Play 服务是他们的 security provider,它承诺升级设备的 SSL 堆栈,以某种方式防止各种漏洞。但是,文档对于提供者实际上做什么 以及哪些 SSL 方法受其影响以及哪些不受其影响有些含糊(提供了每个示例的几个示例,但不是一个完整的列表) .

所以,我想我的问题是双重的:

  • 动态安全提供程序是否会与 okhttp 一起使用,或者 okhttp 是否依赖于不受安装提供程序影响的较低级别(或较高级别)的 API?

  • 假设它确实有效,有什么好处?是否有值得关注的安全优势?它实际上会修复 okhttp 2.2 中与 ALPN 相关的原生崩溃,如 nfuller hints it might

【问题讨论】:

  • 您找到解决方案了吗?
  • @rekire,不,我们从来没有弄清楚到底发生了什么,所以暂时不考虑这个......

标签: android security ssl google-play-services okhttp


【解决方案1】:

TL;DR:是的。

Play Services 动态安全提供程序是 JCA Cryptographic Service Provider (CSP)。 Java 程序可以注册多个 CSP,每个 CSP 可以提供不同的安全原语实现,例如散列算法。以下是 Android 2.3 中包含的 CSP 列表:

  • AndroidOpenSSL 1.0 版
  • DRLCertFactory 1.0 版
  • BC 版本 1.45
  • 加密版本 1.0
  • HarmonyJSSE 1.0 版

当您按照 Android 开发者文档中所述activate the Play Services Dynamic Security Provider 时,只会将另一个提供程序添加到列表顶部:

  • GmsCore_OpenSSL 1.0 版
  • AndroidOpenSSL 1.0 版
  • DRLCertFactory 1.0 版
  • BC 版本 1.45
  • 加密版本 1.0
  • HarmonyJSSE 1.0 版

当 OkHttp(或您的应用程序的任何其他部分)使用 JCA “执行安全性”时,它会根据其功能和偏好(排序顺序)选择提供程序,这意味着将使用 GmsCore_OpenSSL。

通过依赖 GmsCore_OpenSSL 而不是与运行您的应用程序的设备捆绑的任何东西,您可以获得the provided security primitives 的最新实现,即使在装有 Android 2.3 的古老设备上,即不再有 SSLv3、TLS 1.2 (@ 987654325@) 具有当前的密码套件和修补的安全漏洞。由于 Play 服务独立于 Android 进行更新,因此 Play 服务动态安全提供程序保持最新状态,因此在当前设备上使用它也是有意义的。

如果您想定位无法访问 Play 服务的设备,或者您不喜欢使用 Play 服务,您可以在您的应用程序中包含 conscryptOkHttp supports it since version 3.10。但是你必须定期更新你的应用程序。

【讨论】:

  • 官方page注意:更新设备的安全提供程序不会更新android.net.SSLCertificateSocketFactory。我们鼓励应用程序开发人员使用高级方法与密码学交互,而不是使用此类。大多数应用程序都可以使用 HttpsURLConnection 等 API,而无需设置自定义 TrustManager 或创建 SSLCertificateSocketFactory。 考虑到这一点,我如何使用具有自定义 TrustManager 的 Google Play 服务安全提供程序:例如:证书固定、不受信任加州?
  • @garnet 我认为如果您将其作为单独的问题发布,您会更愿意得到有用的答案。
猜你喜欢
  • 2010-11-22
  • 1970-01-01
  • 2016-04-27
  • 2012-04-21
  • 1970-01-01
  • 2019-02-25
  • 2016-02-29
  • 2017-12-25
  • 1970-01-01
相关资源
最近更新 更多