Buenas prácticas y tutoriales

Fijación de certificados en su aplicación móvil Couchbase para iOS

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 Sync Gateway. En un entorno de desarrollo, este certificado puede ser autofirmado.
Si la fiabilidad del certificado se ve comprometida de algún modo o si se utiliza un certificado autofirmado, la identidad del servidor no podrá establecerse de forma fiable y no habrá garantías de confidencialidad en la comunicación entre el cliente y el servidor.
Para aliviar estos problemas, Couchbase Lite soporta certificate pinning. La fijación de certificados es una técnica que puede ser usada por aplicaciones para "fijar" un host a su certificado/clave pública. El certificado es típicamente entregado al cliente por un canal fuera de banda y empaquetado con el cliente. Al anclar el certificado, la aplicación cliente de verificación ya no necesita depender de una tercera parte de confianza para verificar la firma y esta técnica también funcionará con certificados autofirmados.
Este post discutirá cómo fijar certificados dentro de su aplicación cliente Coucbase Lite iOS.

Versión 1.4 de Couchbase Lite sólo soporta la fijación de certificados en iOS. El próximo Versión 2.0 (ahora en Developer Preview) soportará la fijación en todas las plataformas móviles soportadas. Los fragmentos de código que se tratan en este post se aplican a las plataformas versión de producción actual de Couchbase Lite. Esté atento a una futura entrada del blog sobre la fijación de certificados en la versión 2.0.

El problema

La comunicación entre Couchbase Lite y Sync Gateway se encripta utilizando SSL/TLS.

A 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.

Una solución: la fijación de certificados

Una forma común de manejar los problemas anteriores 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 publicación de aplicaciones puede requerir revisiones de la App Store y la responsabilidad de actualizar las aplicaciones recae en los usuarios. Así que esté atento a cuándo caducan los certificados y haga los planes adecuados para publicar las aplicaciones con los nuevos certificados.

Fondo

La pila de Couchbase Mobile incluye Couchbase Lite base de datos integrada que se ejecuta localmente en los dispositivos y Pasarela de sincronización en la nube que suele estar respaldada por Servidor Couchbase persistencia de los datos en la nube. Sync Gateway se encarga de replicar los documentos entre los dispositivos.

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

Siga las instrucciones del Portal para desarrolladores de Couchbase para instalar el certificado de servidor correspondiente 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 un lugar accesible para Sync Gateway.
- Si está generando un certificado autofirmado, probablemente el campo más importante es el Nombre común. Debe ser el FQDN de su Sync Gateway. Si su Sync Gateway no tiene uno, debe especificar el uso de localhost para localhost o la dirección IPA estática de su Sync Gateway.
self signed certificate
Una vez configurada, su pasarela de sincronización debería ser accesible a través de https.

Integración de certificados en su aplicación iOS

  • 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.

  • Abra su archivo .xcodeproj y arrastre y suelte los archivos .der en su poejct. Asegúrese de que tiene "Copiar archivos si es necesario" opción marcada
    Copy files into xcode
  • Una vez copiado, la estructura de su proyecto sería algo así
    Certificate Added
  • Fijación del certificado del servidor Sync Gateway
    Esto sólo requiere unas pocas líneas de código. El código debe ejecutarse una vez. Así que hacerlo en el punto en el código donde se inicializa el CBLManager puede ser una buena opción.

Los pasos 1 y 2 se explican por sí solos.

Paso 3: SecCertificado es un objeto de Core Foundation que representa un certificado X.509

Paso 4: El replicador de Couchbase debe configurarse con el certificado de Sync Gateway mediante el comando setAnchorCerts en el CBLReplicación objeto. Especificando sóloEstos como verdaderole está diciendo a la Replicadora que sólo debe confiar en este certificado. Si lo establece como falsoestá añadiendo el certificado de Sync Gateway a la lista de certificados raíz integrados en los que confía la plataforma iOS.

Ya está. Con unos pocos pasos, puede habilitar la fijación de certificados en su aplicación iOS.

¿Qué sigue?

Como puede haber deducido de este post, Certificate Pinning es muy fácil de configurar en sus aplicaciones iOS. Mientras que el apoyo en V1.4 se limita a iOS,estad atentos a la próxima Versión 2.0 (ahora en Developer Preview), que incluirá también compatibilidad con otras plataformas móviles.
Si tiene alguna pregunta o sugerencia, deje un comentario a continuación o póngase en contacto conmigo a través de Twitter @rajagp o por 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.