Sitecore

Usando certificados válidos para configurar MongoDB con SSL/TLS

Me indicaron que configurara MongoDB para SSL/TLS para un entorno de producción, lo que significa que tendría que usar CERTIFICADOS VÁLIDOS!

Para uso en producción, tu despliegue de MongoDB debería usar certificados válidos generados y firmados por una única autoridad certificante.

Y como quería hacerlo bien, elegí configurar MongoDB con la validación de certificados que requiere la creación de dos archivos .pem – uno para usar como PEMKeyFile y como CAFile en mi archivo de configuración de Mongo.

De acuerdo con la página de tutorial de MongoDB, aquí está lo que debes saber sobre ellos

  • PEMKeyFile con el nombre del archivo .pem que contiene el certificado TLS/SSL firmado y la clave.
  • CAFile con el nombre del archivo .pem que contiene la cadena de certificados raíz de la autoridad certificante.

Lo primero que hay que hacer es trabajar con el certificado válido que tienes, usualmente en formato PFX que contiene la Clave Pública y la Clave Privada asociada.

Exportación de PFX

Trabajar con certificados a veces es complicado, recomendaría usar DigiCert® Certificate Utility for Windows que uso a diario y que es una herramienta que ahorra tiempo. O puedes usar OpenSSL – que es otra HERRAMIENTA GENIAL.

Continuando… asumiendo que ya descargaste, ejecutaste DigiCert Certificate Utility, y que tu PFX ya está instalado en tu máquina, sigamos

1. En la DigiCert Certificate Utility for Windows©, haz clic en SSL (candado dorado), selecciona el certificado que quieres exportar como un archivo .pfx y luego haz clic en Export Certificate.

DigiCert Certificate Utility SSL Export Certificate Blog Vinicius Deschamps

2. En el asistente de Certificate Export, selecciona Yes, export the private key, elige key file (Apache compatible mode), y finalmente haz clic en Next

DigiCert Certificate Export Blog Vinicius Deschamps

3. Elige una ubicación y un nombre de archivo donde quieras guardar la clave, haz clic en Save y luego en Finish

DigiCert Certificate Export to Path Blog Vinicius Deschamps

4. Navega a la ubicación que guardaste; ten en cuenta que la carpeta debe contener la Clave Pública (wildcard_nonlinear_ca.crt), la Clave Privada (wildcard_nonlinear_ca.key) y el Certificado Intermedio (DigiCertCA.crt)

Certificate Files Blog Vinicius Deschamps

PEMKeyFile

Para generar el PEMKeyFile tendremos que usar Notepad++ u otro editor de texto de tu preferencia.

  1. Ve a la ubicación donde están las claves exportadas y abre la Clave Privada – en mi caso wildcard_nonlinear_ca.key
Open Certificate Key Blog Vinicius Deschamps

2. La Clave Privada debería verse así

Private Key to PEM file Blog Vinicius Deschamps

3. Copia todo el contenido de este certificado, incluyendo —-BEGIN RSA PRIVATE KEY—- y —-END RSA PRIVATE KEY—-

4. Abre una nueva pestaña (o un nuevo editor de texto) y pega el contenido que acabas de copiar

Private Key Text Blog Vinicius Deschamps

5. Ahora, vamos a abrir la Clave Pública (wildcard_nonlinear_ca.crt) que debería verse así

public key crt certificate blog vinicius deschamps

6. Copia todo el cuerpo de este certificado, incluyendo —-BEGIN CERTIFICATE—- y —-END CERTIFICATE—-

7. Ve al nuevo texto que acabas de crear (paso 4) y pega el contenido de la Clave Pública en la siguiente línea después de —-END RSA PRIVATE KEY—-

Public Key to PEM File Blog Vinicius Deschamps

8. Luego guarda este documento como archivo .pem

Save PEM certificate file Blog Vinicius Deschamps

CAFile

El proceso es prácticamente el mismo que el descrito para el PEMKeyFile, sin embargo, el CAFile debe incluir también el certificado raíz. Asegúrate de mantener el siguiente orden:

  1. La Clave Privada (wildcard_nonlinear_ca.key)
  2. El Certificado Primario (wildcard_nonlinear_ca.crt)
  3. El Certificado Intermedio (DigiCertCA.crt)
  4. El Certificado Raíz – deberías poder obtenerlo directamente del lugar donde emitiste tu certificado; en mi caso se llama TrustedRoot.crt

Asegúrate de incluir las etiquetas de inicio y fin en cada certificado, y guarda también con la extensión .pem.

Configuración de MongoDB

Suponiendo que ya tienes MongoDB en funcionamiento, para habilitar SSL/TLS debes cambiar un par de cosas en el archivo de configuración mongod.cfg

net:
ssl:
mode: requireSSL
PEMKeyFile: F:\ssl\SysAdmin.pem
CAFile: F:\ssl\ca.pem

Una vez que lo hayas modificado, intenta detener/iniciar el servicio de MongoDB y asegúrate de que funcione correctamente.

Para conectarte a MongoDB a partir de ahora desde CMD, deberás incluir las siguientes opciones

  • –ssl
  • –host
  • –sslPEMKeyFile
  • –sslCAFile

mongo –ssl –host mongodb.mydomain.com –sslPEMKeyFile F:\ssl\SysAdmin.pem –sslCAFile F:\ssl\ca.pem

Sitecore conectándose a MongoDB usando SSL

He planteado la pregunta en Sitecore.Stackexchange y Hishaam Namooya, y Amitabh Vyas pudieron abordar mis problemas.

Amitabh Vyas dijo que

OOTB Sitecore no se comunica con Mongo usando SSL, necesitamos implementar un pipeline personalizado para dicha comunicación.

Personaliza el Sitecore.Analytics.MongoDB.Config definiendo un nuevo Pipeline.

Ahora tienes dos enfoques para establecer una conexión SSL entre Mongo y Sitecore.

  1. Integración SSL usando un archivo PFX físico
  2. Integración SSL leyendo la clave de la máquina

Por favor, mira mi entrada de blog para más detalles](https://sitecorecompetencies.com/2017/03/15/sitecore-mongodb-with-ssl-customization/).

Espero que te haya gustado, y gracias por leer.

¡Nos vemos en mi próxima publicación!

Sitecore
Usando certificados válidos para configurar MongoDB con SSL/TLS — Vinicius Deschamps