我们应该将 google 的安全提供程序与 OkHttp 一起使用吗?
Should we use google's security provider with OkHttp?
我们将 okhttp in our Android project to talk to our API; all communications are encrypted with SSL/TLS, and our servers can speak SPDY. We're also linking in Google Play Services 用于融合位置提供程序和一些其他功能。
我们目前未使用的部分 Play 服务是它们的 security provider,它承诺升级设备的 SSL 堆栈以某种方式防止各种漏洞。但是,文档对于提供商实际 做什么 以及哪些 SSL 方法受其影响以及哪些不受其影响(提供了每个示例,但不是综合列表)。
所以,我想我的问题是双重的:
动态安全提供程序是否会与 okhttp 一起工作,或者 okhttp 是否依赖于不受安装提供程序影响的较低级别(或较高级别)的 API?
假设它确实有效,有什么好处?是否有值得关注的安全优势?它实际上会修复 okhttp 2.2 中与 ALPN 相关的本机崩溃吗,如 nfuller hints it might?
TL;DR: 是的。
Play 服务动态安全提供程序是 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 版
当您 activate the Play Services Dynamic Security Provider 如 Android 开发人员文档中所述时,只会将另一个提供商添加到列表顶部:
- GmsCore_OpenSSL 版本 1.0
- AndroidOpenSSL 版本 1.0
- DRLCertFactory 版本 1.0
- BC 版本 1.45
- 加密版本 1.0
- HarmonyJSSE 1.0 版
当 OkHttp(或您的应用程序的任何其他部分)"does security" 使用 JCA 时,它会根据其功能和偏好(排序顺序)选择提供者,这意味着 GmsCore_OpenSSL 将被使用。
通过依赖 GmsCore_OpenSSL 而不是与您的应用 运行 设备捆绑的任何东西,您可以获得 the provided security primitives even on ancient devices with Android 2.3, i.e. no more SSLv3, TLS 1.2 (Android 2.3 doesn't even support TLS 1.1) 的最新实现和当前密码-套件和修补的安全漏洞。由于 Play 服务独立于 Android 进行更新,因此 Play 服务动态安全提供程序保持最新状态,因此在当前设备上使用它也很有意义。
如果您想要定位无法访问 Play 服务的设备或者您不喜欢使用 Play 服务,您可以包含 conscrypt in your application. OkHttp supports it since version 3.10。但是你必须定期更新你的应用程序。
我们将 okhttp in our Android project to talk to our API; all communications are encrypted with SSL/TLS, and our servers can speak SPDY. We're also linking in Google Play Services 用于融合位置提供程序和一些其他功能。
我们目前未使用的部分 Play 服务是它们的 security provider,它承诺升级设备的 SSL 堆栈以某种方式防止各种漏洞。但是,文档对于提供商实际 做什么 以及哪些 SSL 方法受其影响以及哪些不受其影响(提供了每个示例,但不是综合列表)。
所以,我想我的问题是双重的:
动态安全提供程序是否会与 okhttp 一起工作,或者 okhttp 是否依赖于不受安装提供程序影响的较低级别(或较高级别)的 API?
假设它确实有效,有什么好处?是否有值得关注的安全优势?它实际上会修复 okhttp 2.2 中与 ALPN 相关的本机崩溃吗,如 nfuller hints it might?
TL;DR: 是的。
Play 服务动态安全提供程序是 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 版
当您 activate the Play Services Dynamic Security Provider 如 Android 开发人员文档中所述时,只会将另一个提供商添加到列表顶部:
- GmsCore_OpenSSL 版本 1.0
- AndroidOpenSSL 版本 1.0
- DRLCertFactory 版本 1.0
- BC 版本 1.45
- 加密版本 1.0
- HarmonyJSSE 1.0 版
当 OkHttp(或您的应用程序的任何其他部分)"does security" 使用 JCA 时,它会根据其功能和偏好(排序顺序)选择提供者,这意味着 GmsCore_OpenSSL 将被使用。
通过依赖 GmsCore_OpenSSL 而不是与您的应用 运行 设备捆绑的任何东西,您可以获得 the provided security primitives even on ancient devices with Android 2.3, i.e. no more SSLv3, TLS 1.2 (Android 2.3 doesn't even support TLS 1.1) 的最新实现和当前密码-套件和修补的安全漏洞。由于 Play 服务独立于 Android 进行更新,因此 Play 服务动态安全提供程序保持最新状态,因此在当前设备上使用它也很有意义。
如果您想要定位无法访问 Play 服务的设备或者您不喜欢使用 Play 服务,您可以包含 conscrypt in your application. OkHttp supports it since version 3.10。但是你必须定期更新你的应用程序。