Resumen

Asegurar los datos y el acceso a los datos de las aplicaciones es un paso importante para asegurar el entorno de las aplicaciones cliente y la protección de las bases de datos en entornos de cualquier tamaño. Uno de los métodos más sencillos para asegurar los datos es la ruta de acceso desde la aplicación al servidor de base de datos. Algunas bases de datos emplean esquemas cerrados para asegurar las comunicaciones del cliente para las conexiones de sesión a la base de datos, pero el servidor Couchbase emplea certificados TLS para asegurar las comunicaciones. Este proceso puede resultar complejo para los no iniciados, pero Let's Encrypt, una nueva autoridad de certificación gratuita, pretende cambiar esta situación y poner la tecnología de seguridad al alcance de todos.

Cifremos

Empezar a utilizar Let's Encrypt (abreviado LE) requiere un conocimiento mínimo de las arquitecturas de certificados, pero sí un conocimiento práctico de los sistemas Unix o Windows. LE emplea un enfoque automatizado para la creación y gestión de certificados a través de la especificación de protocolo IETF denominada "Automated Certificate Management Environment" (ACME). ACME proporciona un mayor paradigma de seguridad a través de la automatización. Algunas de las ventajas de este enfoque se muestran a continuación:

  • Creación, renovación y revocación automatizadas de certificados
  • Validación del nombre de dominio/propietario
  • Certificados con firma cruzada
  • Basado en ACME
  • Extensible

Para obtener más información sobre Let's Encrypt, visite su página web en https://letsencrypt.org/ y si quieres saber directamente a la tecnología este enlace https://letsencrypt.org/how-it-works/ tiene más detalles.

Ahora, empecemos a crear certificados LE y a usarlos con Couchbase.

Protección de Couchbase

 

La creación de certificados con LE para su uso con cualquier aplicación es fácil y para el servidor Couchbase es tan simple como emitir unos pocos comandos. Hay requisitos previos que deben entenderse antes de empezar. Se discuten en la documentación actual de Couchbase Server y en el sitio web de LE.

  • LetsEncrypt.com

https://letsencrypt.org/getting-started/

Crear certificados con CertBot

Antes de crear e instalar los certificados es necesario obtener la herramienta automatizada LE llamada CertBot.

Requisitos previos

Para instalar CertBot, la herramienta automatizada de certificados de Let's Encrypt, hay dos maneras.

  1. De su proveedor de SO: Visite https://certbot.eff.org/ y elija su sistema operativo
  2. A través de GitHub: requiere tener "git" instalado

Una vez que haya instalado CertBot estará listo para empezar a crear certificados.


Nota: Hay algunas advertencias como el despliegue en la nube o en un sistema no en el borde. Presta atención a tu conexión al cliente o a internet cuando decidas topologías de red y servidor con Let's Encrypt.


Los siguientes pasos se utilizaron con instancias en Amazon AWS para crear certificados para su uso con Couchbase Server. Sus pasos deben ser similares, pero proporcionamos estos pasos como un ejemplo.

 

1. Ejecute certbot desde la línea de comandos la primera vez con la opción '-h':

 

2. Inicie el cuadro de diálogo de creación de certificados en modo manual para la creación guiada por instrucciones.

 

3. Aceptar la licencia

4. Reconocer cómo validar que el dominio es suyo (servidor web o servidor pythons autónomo incorporado).

5. proporcionar un nombre de host DNS público válido

6. proporcionar una dirección de correo electrónico válida

Figura: Ejemplo de nombre de host válido

 valid_example_hostname

La captura de pantalla anterior es de las pantallas de configuración utilizadas durante la configuración de la solicitud.

 

 

Si la creación del certificado se ha realizado correctamente, verá un mensaje como el siguiente:

 

Para asegurarse de que los certificados se han guardado correctamente, puede listar el contenido del directorio de la siguiente manera:

 

Configuración del nombre alternativo del sujeto del certificado (SAN)

Es probable que el certificado tenga más de un nombre. Puede añadir nombres adicionales a un certificado, lo que también se denomina Subject Alternative Name (SAN). A continuación se muestra un ejemplo de creación de un certificado para varios dominios utilizando SAN:

 

Una vez satisfecho con la creación y preparación de su certificado es el momento de añadir certificados a Couchbase Server.

 

Despliegue de certificados en Couchbase

Preparación

Una vez que la creación del certificado se ha completado con éxito, debe utilizar un conjunto de herramientas de línea de comandos para asegurarse de que Couchbase puede acceder a los certificados. La descripción completa se encuentra en el enlace de la documentación del servidor Couchbase que se muestra y en los párrafos siguientes se proporcionará un ejemplo de configuración.

https://developer.couchbase.com/documentation/server/current/security/security-x509certsintro.html

Para que los certificados de LE puedan utilizarse para el cifrado, es necesario que proporcione el certificado "raíz de CA" de LE. El siguiente enlace proporciona un diagrama y una descripción de la jerarquía sobre la CA.

https://letsencrypt.org/certificates/

 

Aquí se muestra el diagrama CA propiamente dicho: https://letsencrypt.org/certs/isrg-keys.png

 

Importar certificados

La importación de certificados al servidor Couchbase debe hacerse en cada nodo. Además, se utiliza un directorio especial llamado "inbox" en el directorio del servidor Couchbase para almacenar los certificados. Tenga especial cuidado al ejecutar los comandos como root para no dañar nada en el directorio del servidor Couchbase. Asegúrese de que el propietario y el grupo se establecen en "couchbase" para el directorio "inbox" y todos los archivos en su interior.

 


Este procedimiento debe completarse en cada nodo. Cada nodo también debe tener un nombre de host DNS direccionable o utilizar un proxy inverso como NGinX u otro método. Para más información vaya a http://www.letsencrypt.com/documentation o consulte las siguientes guías: https://github.com/certbot/certbot/wiki/Links


 

1. Descargar el certificado CA-Root
a. Utilice su navegador para guardar el texto que se muestra aquí:
I. https://www.identrust.com/certificates/trustid/root-download-x3.html a un archivo de texto plano como: lets-encrypt-x3-rootCA.pem
b. Formatee la clave dentro del archivo como se indica a continuación y guárdela como texto sin formato (no RTF ni ninguna otra cosa)
I. --COMENZAR CERTIFICADO--
--FIN DEL CERTIFICADO--
2. Crear el directorio "Inbox" de Couchbase Server
a. mkdir /opt/couchbase/var/lib/couchbase/inbox
3. Cambia los permisos de "root" a "couchbase".
a. chown couchbase:couchbase -R /opt/couchbase/var/lib/couchbase/inbox
4. Haz de la "bandeja de entrada" tu directorio de trabajo actual
a. cd /opt/couchbase/var/lib/couchbase/inbox
5. Copiar los certificados creados con Let's Encrypt a la bandeja de entrada
a. cp /etc/letsencrypt/live/tu.dominio.com/cert1.pem .
b. cp /etc/letsencrypt/live/tu.dominio.com/plave1.pem .
c. cp /etc/letsencrypt/live/tu.dominio.com/fullchain.pem chain.pem
6. Convertir la clave privada a RSA
a. openssl rsa -in pkey.pem > pkey.key
7. Importar los diferentes certificados a Couchbase Server
a. Importar el certificado ROOT-CA a Couchbase
I. /opt/couchbase/bin/couchbase-cli ssl-manage -c localhost -upload-cluster-ca=lets-encrypt-x3-rootCA.pem -u -p
b. Importar la clave privada convertida a RSA en el nodo.
I. /opt/couchbase/bin/couchbase-cli ssl-manage -c localhost -set-node-certificate -u -p

 

Probar la configuración

Para probar si la configuración está funcionando, abra un navegador web como FireFox, I.E. o Chrome versión 50.x a la URL del servidor a través de HTTPS así:

https://myurl.com:18091/

 

Verá una imagen como la siguiente en la barra de direcciones, lo que significa que la interfaz de usuario ya está protegida.

 

 hopto_org

 

Es el mismo puerto que se utiliza en el nivel de aplicación para proteger las comunicaciones entre la aplicación y el servidor.

 

Si necesitas ayuda adicional con los certificados x.509 puedes consultar la documentación de Couchbase 4.5 aquí: http://developer.couchbase.com/documentation/server/4.5/admin/admin-intro.html

 

También puede enviar un correo electrónico a austin.gonyou@couchbase.com o Don.Pinto@couchbase.com

Autor

Publicado por Austin Gonyou, Ingeniero de soluciones, Couchbase

Austin Gonyou es Ingeniero de Soluciones en Couchbase desde hace 4 años. Austin aporta soluciones técnicas sobre el servidor de bases de datos de documentos NoSQL de Couchbase y conversaciones móviles facilitadas por personal de ventas interno, de nivel medio y empresarial para nuestros clientes potenciales y clientes.

1 Comentarios

  1. [...] Securing Couchbase Server using Let's Encrypt x.509 Certificates - Austin Gonyou [...]

Dejar una respuesta