1. Utilizando Java Keystores para securizar Mule Applications


Para securizar las comunicaciones entre el cliente (request) y el servidor (response) es necesario exponer un certificado y tener un almacen de claves «Keystore». Como arquitecto, tendrás que gestionar que las peticiones sean seguras y, con el apoyo del equipo de seguridad, obtener los certificados necesarios.

 

Comunicación Segura: HTTP y Certificados

Cuando navegas por internet, las páginas web utilizan el protocolo HTTP. Para mantener segura la comunicación entre un servidor y un cliente (como tu navegador), se utiliza HTTPS, que es la versión segura de HTTP. Esto se logra a través de un proceso llamado TLS.

 

Generación de Certificados: Clave Pública y Privada:

Los certificados digitales utilizan un par de claves: una clave privada y una clave pública. La clave privada es secreta y se mantiene en el servidor, mientras que la clave pública se incluye en un certificado digital y se puede compartir abiertamente. La clave pública permite a los clientes cifrar mensajes que solo la clave privada correspondiente puede descifrar.

 

Proceso de Handshake TLS:

El «handshake» es un proceso en el que el servidor y el cliente establecen parámetros de comunicación segura antes de transferir información real. Aquí se utiliza el certificado del servidor:

  1. Exposición del Certificado: Primero, el servidor presenta su certificado con su clave pública al cliente.
  2. Cifrado de la Comunicación: El cliente usa la clave pública para cifrar la información, lo que garantiza que solo el servidor con la clave privada correspondiente pueda descifrarla.
  3. Descifrado y Respuesta: El servidor descifra la solicitud del cliente con su clave privada y responde. La respuesta está cifrada de manera que se pueda descifrar con la clave pública, asegurando la integridad y confidencialidad del «handshake».

Keystore y Truststore

En MuleSoft, se utilizan dos componentes esenciales para la seguridad:

  • Keystore: Aquí se almacenan las claves privadas de nuestras aplicaciones Mule. Es el repositorio de tus credenciales de seguridad.
  • Truststore: Este almacena los certificados públicos de otros servidores o entidades. Básicamente, es una lista de entidades en las que confías.

 

Comunicación Bidireccional: Two-Way SSL/Mutual TLS:

Para una seguridad aún más robusta, se utiliza SSL bidireccional o Mutual TLS. En este escenario, tanto el cliente como el servidor tienen su propio keystore y truststore. Esto significa que tanto el cliente como el servidor verifican la identidad del otro, creando un canal de comunicación extremadamente seguro.

 

Almacenamiento de Certificados: Standalone vs Cloud vs Runtime Fabric

La gestión de certificados varía según la infraestructura:

  • Standalone: Se pueden obtener certificados de una ruta específica en el sistema de archivos.
  • Cloudhub: No hay acceso a un directorio de sistema de archivos, por lo que los certificados deben incluirse dentro de la aplicación.
  • Runtime Fabric: Utiliza el recurso Secrets Manager para almacenar y gestionar certificados de manera segura.

 

Secrets Manager:

Es una herramienta dentro de Anypoint Platform que te permite almacenar y controlar el acceso a claves privadas, contraseñas y certificados. Es compatible con los runtimes alojados por el cliente en Runtime Fabric y API Manager.

 

Mejores Prácticas: TLS

Para asegurar las comunicaciones, se recomienda el uso de Mutual TLS, ya que proporciona una capa adicional de seguridad, asegurando que tanto el cliente como el servidor sean auténticos.

Conclusión

En resumen, el uso de TLS y la correcta gestión de keystores y truststores son fundamentales para asegurar las comunicaciones en MuleSoft. Ya sea a través de un enfoque estándar o con herramientas avanzadas como Secrets Manager, MuleSoft proporciona las capacidades necesarias para proteger tus datos y los de tus usuarios. Y recuerda, Mutual TLS siempre será la opción más segura para autorizar máquinas a acceder a recursos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *