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.
- Recursos de Couchbase
http://developer.couchbase.com/documentation/server/4.5/security/security-comm-encryption.html
https://developer.couchbase.com/documentation/server/current/security/security-x509certsintro.html
- LetsEncrypt.com
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.
- De su proveedor de SO: Visite https://certbot.eff.org/ y elija su sistema operativo
- 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':
1 2 3 |
<span clase="comentario simbólico"><span clase="hljs-comment"># cd certbot/</span></span> <span clase="comentario simbólico"><span clase="hljs-comment"># ./certbot-auto -h</span></span> |
2. Inicie el cuadro de diálogo de creación de certificados en modo manual para la creación guiada por instrucciones.
1 2 |
<span clase="comentario simbólico"><span clase="hljs-comment"># ./certbot-auto certonly -manual -standalone</span></span> |
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
La captura de pantalla anterior es de las pantallas de configuración utilizadas durante la configuración de la solicitud.
1 2 3 |
<span clase="comentario simbólico"><span clase="hljs-comment"># certbot-auto certonly --email info@DOMAIN.com \</span></span> --de acuerdo-tos manual --renovar-por-por defecto \ --autentificador independiente |
Si la creación del certificado se ha realizado correctamente, verá un mensaje como el siguiente:
1 2 3 4 5 6 |
IMPORTANTE NOTAS: - Enhorabuena<span clase="operador de fichas">!</span> Su certificado y cadena tienen ha sido guardado en /etc/letsencrypt/en directo/tudominio.com/cadena completa.pem. Su cert se caduca en <span clase="operador de fichas"><</span><span clase="número hljs">30</span> días más tarde<span clase="operador de fichas">></span>. A obtener a nuevo versión de el certificado <span clase="palabra clave token"><span clase="hljs-palabra clave">en</span></span> el futuro, simplemente ejecute CertBot de nuevo. |
Para asegurarse de que los certificados se han guardado correctamente, puede listar el contenido del directorio de la siguiente manera:
1 |
<span clase="función token">ls</span> <span clase="hljs-operator">-l</span> etc/letsencrypt/en directo/tudominio.com/ |
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:
1 2 3 4 5 6 |
certbot-auto certonly --correo electrónico información@DOMINIO.com --de acuerdo-tos manual --renovar-por-por defecto / <span clase="hljs-operator">-d</span> www.DOMINIO.com / <span clase="hljs-operator">-d</span> DOMINIO.com <span clase="hljs-operator">-d</span> autoconfig.DOMINIO.com / <span clase="hljs-operator">-d</span> www.DOMINIO2.com / <span clase="hljs-operator">-d</span> DOMINIO2.com / <span clase="hljs-operator">-d</span> autoconfig.DOMINIO2.com --autentificador independiente |
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.
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
[...] Securing Couchbase Server using Let's Encrypt x.509 Certificates - Austin Gonyou [...]