¿Debemos usar el proveedor de seguridad de google con OkHttp?
Estamos usando okhttp en nuestro proyecto Android para hablar con nuestra API; Todas las comunicaciones están encriptadas con SSL / TLS, y nuestros servidores pueden hablar SPDY. También estamos enlazando en Google Play Services el proveedor de ubicación fusionado y alguna otra funcionalidad.
Parte de los servicios de Google Play que no estamos utilizando actualmente es su proveedor de seguridad , que promete actualizar la pila SSL del dispositivo para proteger de alguna manera contra diversas vulnerabilidades. Sin embargo, los documentos son algo vagos en cuanto a lo que el proveedor realmente hace y qué métodos SSL se ven afectados por ella y cuáles no son (algunos ejemplos de cada uno se proporcionan, pero no una lista completa).
- ¿Cómo usar el SSL auto-firmado en la biblioteca de red de Android (ION)?
- Android ssl: javax.net.ssl.SSLPeerUnverifiedException: Ningún certificado de igual (una vez más)
- Cómo agregar un certificado pkcs12 de cliente a Postman Chrome, W7?
- Ahora que SSLSocketFactory está obsoleto en Android, ¿cuál sería la mejor manera de manejar la autenticación de certificados de cliente?
- Android 2.3.4 problema de SSL
Por lo tanto, supongo que mi pregunta es doble:
-
¿Funcionará el proveedor de seguridad dinámico incluso con okhttp, o no confía en las APIs de nivel inferior (o de nivel superior) que no se ven afectadas por la instalación del proveedor?
-
Suponiendo que funciona, ¿cuáles son los beneficios? ¿Hay beneficios de seguridad que vale la pena preocuparse? ¿De hecho arreglará el fallo nativo relacionado con ALPN en okhttp 2.2, como pistas nfuller ?
- El certificado RapidSSL no es de confianza en la tableta Android
- Soporte para WebView de Android onReceivedClientCertRequest
- ¿Cómo obtener charles proxy trabajo con Android 7 turrón?
- Javax.net.ssl.SSLPeerUnverifiedException: Ningún certificado igual mientras intentaba conectarse usando https con .bks keystore
- Javax.net.ssl.SSLHandshakeException: Handshake falló en Android 5.0.0 cuando SSLv2 y SSlv3 están deshabilitados (sólo TLS) (y mayores)
- OkHttp javax.net.ssl.SSLPeerUnverifiedException: Nombre de host domain.com no verificado
- Comprobación de que el mensaje provenía de un punto específico de aplicación / punto final
- Generación e instalación de certificados SSL
TL; DR: Sí.
El proveedor de seguridad dinámica de Play Services es un proveedor de servicios criptográficos JCA (CSP). Un programa Java puede tener varios CSP registrados y cada CSP puede proporcionar diferentes implementaciones de primitivas de seguridad como algoritmos hashing. Aquí está una lista de CSP incluida en Android 2.3:
- AndroidOpenSSL versión 1.0
- DRLCertFactory versión 1.0
- BC versión 1.45
- Crypto versión 1.0
- HarmonyJSSE versión 1.0
Cuando activa el Proveedor de seguridad dinámica de Play Services como se describe en la documentación para desarrolladores de Android, sólo se agrega otro proveedor al principio de la lista:
- GmsCore_OpenSSL versión 1.0
- AndroidOpenSSL versión 1.0
- DRLCertFactory versión 1.0
- BC versión 1.45
- Crypto versión 1.0
- HarmonyJSSE versión 1.0
Cuando OkHttp (o cualquier otra parte de su aplicación) "hace seguridad" usando JCA, selecciona un proveedor según sus capacidades y la preferencia (orden de clasificación) que significa que se utilizará GmsCore_OpenSSL.
Al confiar en GmsCore_OpenSSL en lugar de lo que está incluido con el dispositivo de su aplicación se ejecuta en obtener una puesta al día de la aplicación de las primitivas de seguridad proporcionados, incluso en dispositivos antiguos con Android 2.3, es decir, no más SSLv3, TLS 1.2 ( Android 2.3 doesn Ni siquiera soporta TLS 1.1 ) con los actuales conjuntos de cifrado y parches de seguridad. Debido a que los Servicios de Reproducción se actualizan independientemente de Android, el Proveedor de Seguridad Dinámica de Play Services se mantiene actualizado y, por lo tanto, tiene sentido utilizarlo también en dispositivos actuales.
- Cómo extraer valores de color (#rgb) de un tema de Android?
- Rotar imágenes en android. ¿Hay una mejor manera?