Couchbase Móvil

Fijación de certificados en Android con Couchbase Mobile

Couchbase Móvil 2.0 soporta certificate pinning en todas las plataformas móviles de Couchbase. La vinculación de certificados es una técnica utilizada por las aplicaciones para "vincular" un host a su certificado/clave pública. La comunicación entre Couchbase Lite y Sync Gateway está encriptada y asegurada usando SSL/TLS. El protocolo SSL/TLS se basa en una infraestructura de clave pública (PKI) mediante un mecanismo Certificado X.509 para establecer la identidad del servidor Sync Gateway. El certificado suele emitirlo/firmarlo una autoridad de certificación de confianza y se instala en el Sync Gateway.

En un entorno de desarrollo, este certificado puede ser autofirmado.

Si la fiabilidad del certificado se ve comprometida de alguna manera o si se está utilizando un certificado autofirmado, entonces la identidad del servidor no se puede establecer de forma fiable y no puede haber garantías de confidencialidad en la comunicación entre el cliente y el servidor. Para aliviar estos problemas, Couchbase Lite soporta prendido del certificado. Para lograr la vinculación de certificados, el certificado de clave pública se suele entregar a la aplicación cliente a través de un canal fuera de banda y se incluye con la aplicación cliente. Al anclar el certificado, la aplicación cliente verificadora ya no necesita depender de una CA de terceros para verificar la firma. Esta técnica también es necesaria para comunicarse con Sync Gateway configurada con certificados autofirmados.

En este artículo se explica cómo fijar certificados en Coucbase Lite. Versión 2.0 habilitada para Android. Versión 1.4 de Couchbase Lite sólo era compatible con la fijación de certificados en iOS y que se discutió en este entrada del blog.

Puede descargar las últimas versiones preliminares de Couchbase Mobile 2.0 en aquí.

Fondo

Si está familiarizado con SSL/TLS o ha leído esto entrada del blogpuedes saltar a la sección "Soporte de Certificate Pinning con Couchbase Mobile" de esta entrada de blog.

La comunicación entre Couchbase Lite y Sync Gateway se encripta utilizando SSL/TLSA muy alto nivel, el protocolo TLS funciona de la siguiente manera.
En la puerta de enlace de sincronización se instala un certificado X.509 que contiene la clave pública y la identidad del servidor. Este certificado de clave pública puede estar firmado por una autoridad de certificación externa de confianza o puede estar autofirmado, lo que suele ser el caso en entornos de desarrollo.
Durante el establecimiento de la conexión, la aplicación cliente que ejecuta Couchbase Lite verifica la identidad de la puerta de enlace de sincronización utilizando el certificado del servidor. Couchbase Lite usa el certificado raíz de la CA de confianza para validar el certificado. Una vez verificado, el cliente procede con el intercambio de clave secreta. El secreto compartido se utiliza entonces para cifrar la comunicación entre el cliente y Sync Gateway.
Basic TLS Exchange
Consulte el RFC para obtener información específica sobre el protocolo SSL/TLS.

Este enfoque plantea algunos problemas :-
- Aunque en la mayoría de las circunstancias es razonable confiar en la fiabilidad de la CA, es posible que la propia CA se vea comprometida. Si esto ocurre, no hay forma fiable de autenticar la puerta de enlace de sincronización porque la propia CA utilizada para la verificación no es de confianza.
- La comunicación cliente-servidor puede ser objeto de un ataque de intermediario (Man-in-the-Middle, MiTM) por el que un servidor fraudulento que se haga pasar por Sync Gateway puede emitir un certificado falso que represente a Sync Gateway, firmado por una CA falsa. Si el cliente es engañado de algún modo para que incluya el certificado de la CA falsa en su almacén de Autoridades de Certificación raíz de confianza, entonces el cliente confiará en el certificado falso firmado por la CA falsa. El resultado será que el cliente se comunicará con una puerta de enlace de sincronización falsa.
- Si utiliza certificados autofirmados en su entorno de desarrollo, no hay forma de que el cliente valide de forma fiable la identidad del servidor.

Entrega de certificados

Una forma común de manejar los problemas mencionados anteriormente es "fijar" el servidor Sync Gateway a su certificado/clave pública. En esta técnica, Couchbase Lite está preconfigurado con el certificado de confianza de Sync Gateway. Así, durante el establecimiento de la conexión, Couchbase Lite utiliza este certificado preconfigurado para verificar la identidad del servidor. Esto elimina la dependencia de una tercera CA externa para la verificación del certificado.
En Sitio web de OWASP es una buena referencia sobre la fijación de certificados.

Advertencia:

Es importante tener en cuenta que, dado que las aplicaciones se incluyen con el certificado, cada vez que este caduque habrá que actualizar la aplicación con el nuevo certificado. Esto puede ser un poco más difícil en entornos móviles, donde la responsabilidad de actualizar las aplicaciones recae en los usuarios. Por lo tanto, hay que estar al tanto de cuándo caducan los certificados y hacer los planes adecuados para publicar las aplicaciones con los nuevos certificados antes de que caduquen.

Soporte de Certificate Pinning con Couchbase Mobile

Este post asume que estás familiarizado con el desarrollo de aplicaciones Android y la configuración de tu aplicación para utilizar Couchbase Lite 2.0. Si no es así, por favor revisa este Primeros pasos guía. Utilizaremos Pasarela de sincronización 1.5 en la nube respaldado por un Servidor Couchbase persistencia de los datos en la nube. El servidor Couchbase no es relevante para las discusiones en este post.

Instalación del certificado en la puerta de enlace de sincronización

Siga las instrucciones del Portal para desarrolladores de Couchbase para generar / instalar el correspondiente certificado de servidor en su Sync Gateway

Un par de puntos a tener en cuenta durante la generación del certificado:-

  • El certificado y la clave privada correspondiente deben estar en formato .pem
  • Instale los certificados en una ubicación accesible para Sync Gateway. De lo contrario, se producirá un error al iniciar Sync Gateway con el archivo de configuración.

  • Si está generando un certificado autofirmadoprobablemente el campo más importante sea el Nombre común. Debe ser el FQDN de su Sync Gateway. Si su Sync Gateway no tiene uno, debe especificar el uso de 10.0.2.2 para localhost o la dirección IPA estática de su Sync Gateway.

Archivo de configuración de la pasarela de sincronización

Confirme que el archivo de configuración de Sync Gateway incluye las siguientes propiedades

Verificación de la configuración SSL en su Sync Gateway

Para comprobar que puede conectarse a su Sync Gateway a través de SSL, ejecute lo siguiente rizo en un comando de terminal. Sustituya localhost en el comando de abajo con la dirección IP de su puerta de enlace de sincronización.

Si la configuración es correcta, debería ver algo como esto en la salida

  • Convierta el certificado PEM en formato der utilizando el siguiente comando

Puede consultar este Hoja de trucos SSL para más detalles sobre los distintos comandos de openSSL.

  • Copie el cert.pem en su Activos carpeta. La carpeta del proyecto de Android Studio debe ser similar a la siguiente
  • Fijación del certificado del servidor Sync Gateway
    • Para fijar el certificado, primero debemos cargar el certificado que se incluye con la aplicación Activos carpeta.

En este ejemplo, estamos utilizando las clases de utilidad IOUtils de [Apache Commons IO](https://commons.apache.org/proper/commons-io/description.html) para convertir el certificado leído del flujo de entrada de archivos a byte array. Puede elegir cualquier otra herramienta/método para la conversión.

- Configure el Replicador con el certificado fijado. En una aplicación real, tendrás que hacer una comprobación de nulos en el certificado antes de fijarlo. Omitimos las comprobaciones aquí por brevedad.

Ya está. Con sólo un par de pasos, puedes habilitar la fijación de certificados en tu aplicación Android con Couchbase Mobile 2.0.

¿Qué sigue?

Esta entrada del blog discutió los beneficios de la fijación de certificados dentro de tus aplicaciones móviles y cómo puedes habilitar la fijación de certificados con Couchbase Lite 2.0. El ejemplo trataba de una aplicación Android, pero el enfoque sería similar en otras plataformas también.

Si tiene alguna pregunta o sugerencia, deje un comentario a continuación o póngase en contacto conmigo en Twitter @rajagp o envíeme un correo electrónico priya.rajagopal@couchbase.com. En Foros de Couchbase son otro buen lugar para plantear preguntas.

 

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Priya Rajagopal, Directora de Gestión de Productos

Priya Rajagopal es directora sénior de gestión de productos en Couchbase y responsable de las plataformas de desarrollo para la nube y el perímetro. Lleva más de 20 años dedicándose profesionalmente al desarrollo de software en varios puestos de liderazgo técnico y de producto, con más de 10 años centrados en tecnologías móviles. Como delegada de estándares IPTV de TISPAN, fue una colaboradora clave en las especificaciones de estándares IPTV. Tiene 22 patentes en las áreas de redes y seguridad de plataformas.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.