Para que BI Connector transmita datos de forma segura, debe habilitar el cifrado de seguridad de la capa de transporte (TLS) en su instancia de MongoDB, su
mongosqld instancia, y en su herramienta de BI. Una descripción completa de
La configuración deTLS está fuera del alcance de este documento, pero este tutorial describe el proceso para crear sus propios certificados TLS para fines de prueba e iniciar los componentes de MongoDB con TLS habilitado.
Importante
Utiliza estos procedimientos solo con fines de prueba. Tu entorno de producción debe utilizar certificados TLS emitidos por una autoridad de certificación reconocida (CA).
Requisitos previos
Un usuario de MongoDB con permisos suficientes para
mongosqldejecutar.Una instancia que puedes iniciar y
mongoddetener.Una instancia
mongosqldque puede iniciar y detener.La MySQL shell
Nota sobre la disponibilidad de clúster
Para garantizar la disponibilidad de lectura para tus sets de réplicas y clústeres sharded de MongoDB mientras BI Connector habilita TLS, utiliza un procedimiento de actualización continua. Mientras el primario del set de réplicas se actualiza, las aplicaciones deben esperar hasta que finalice el ciclo de conmutación por error y elección.
Crear y probar certificados autofirmados
Este tutorial contiene instrucciones para crear varios archivos que permiten que un proceso acepte mongosqld conexiones cifradas con OpenSSL desde un cliente SQL, como el shell de MySQL, y establezca una conexión cifrada con una instancia.mongod Creamos dos archivos.pem. Cada archivo contiene una clave de cifrado y un certificado TLS autofirmado.
Crear un directorio de certificados.
Usa el símbolo del sistema de Windows
cmdpara crear un directorio donde almacenar tus certificados. Este tutorial utilizaC:\opt\certs.mkdir C:\opt\certs cd C:\opt\certs Este tutorial presupone que tu directorio OpenSSL se encuentra en
C:\OpenSSL. Si se encuentra en otra ubicación de tu sistema, edita los comandos apropiadamente o mueve el directorio aC:\OpenSSL.Si tu directorio
C:\OpenSSL\binno contiene un archivo de configuración llamadoopenssl.cfg, crea uno.Ejemplo
Este es un archivo de configuración de ejemplo.
# # OpenSSL configuration file. # # Establish working directory. dir = . [ ca ] default_ca = CA_default [ CA_default ] serial = $dir/serial database = $dir/certindex.txt new_certs_dir = $dir/certs certificate = $dir/cacert.pem private_key = $dir/private/cakey.pem default_days = 365 default_md = md5 preserve = no email_in_dn = no nameopt = default_ca certopt = default_ca policy = policy_match [ policy_match ] countryName = match stateOrProvinceName = match organizationName = match organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 1024 default_keyfile = key.pem default_md = md5 string_mask = nombstr distinguished_name = req_distinguished_name req_extensions = v3_req [ req_distinguished_name ] # Variable name Prompt string #--------------------------- ---------------------------------- 0.organizationName = Organization Name (company) organizationalUnitName = Organizational Unit Name (department, division) emailAddress = Email Address emailAddress_max = 40 localityName = Locality Name (city, district) stateOrProvinceName = State or Province Name (full name) countryName = Country Name (2 letter code) countryName_min = 2 countryName_max = 2 commonName = Common Name (hostname, IP, or your name) commonName_max = 64 # Default values for the above, for consistency and less typing. # Variable name Value #--------------------------- ------------------------------ 0.organizationName_default = My Company localityName_default = My Town stateOrProvinceName_default = State or Providence countryName_default = US [ v3_ca ] basicConstraints = CA:TRUE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer:always [ v3_req ] basicConstraints = CA:FALSE subjectKeyIdentifier = hash Configura una variable de entorno para usarla más tarde.
set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg
Generar una Autoridad Certificadora autofirmada.
Cambiar el directorio a
C:\opt\certs.cd C:\opt\certs Inicia la aplicación OpenSSL.
C:\OpenSSL\bin\openssl.exe C:\Users\username>cd C:\opt\certs C:\Users\username>C:\OpenSSL\bin\openssl.exe OpenSSL> El siguiente comando genera y exporta una clave privada a
mdbprivate.key.genrsa -out C:\opt\certs\mdbprivate.key -aes256 \ -passout pass:password El siguiente comando genera y entrega un archivo de autoridad de certificación a
mdbca.crt.El siguiente comando solicita al usuario que introduzca varios datos que se incorporan a la solicitud de certificado. Uno de los campos se llama
Common Name, que corresponde a un nombre de dominio completo (FQDN). La entradaCommon Namedel certificado generado en este paso del tutorial debe ser diferente de la entradaCommon Namede los certificados generados en los pasos 3 y 9.req -x509 -new -key C:\opt\certs\mdbprivate.key -days 1000 -out C:\opt\certs\mdbca.crt -passin pass:password
Ahora tenemos dos archivos: el archivo de autoridad de certificación mdbca.crt y la clave mdbprivate.key utilizada para firmar esa solicitud.
Genere un certificado PEM para el servidor MongoDB.
O comando a seguir gera uma chave para o processo mongod para uso do TLS e um CSR. Para esta etapa, a resposta Common Name deve ser o FQDN do servidor em que sua instância mongod TLS, como www.example.com.
Introduzca el siguiente comando en el indicador de OpenSSL:
req -new -nodes -newkey rsa:2048 -keyout .\mdb.key -out .\mdb.csr
Crea un archivo PEM para el servidor de MongoDB.
Un archivo .pem consta de una clave y un certificado concatenados. Para crear un archivo .pem para su instancia de MongoDB, salga del símbolo del sistema de OpenSSL e introduzca el siguiente comando en el símbolo del sistema cmd del directorio C:\opt\certs:
copy .\mdb.key + .\mdb.crt mdb.pem
Ahora debería tener los siguientes archivos en su directorio de certificados:
mdb.crt mdb.csr mdb.key mdb.pem mdbca.crt mdbprivate.key
Si falta alguno, vuelve y revisa los pasos anteriores, comprobando si hay errores.
Actualiza el archivo de configuración mongod.
Para configurar mongod para exigir TLS en las conexiones entrantes, modifique el archivo de configuración como se indica a continuación. Tus valores pueden variar, dependiendo de dónde creaste tus archivos TLS.
Opción | Valor |
|---|---|
| |
| |
| |
| |
|
Ejemplo
El siguiente archivo de configuración contiene directivas para conexiones TLS y autenticación x.509
Es posible que su archivo de configuración requiera opciones adicionales o diferentes.
systemLog: destination: file path: 'C:\data\mongod.log' logAppend: true net: bindIp: <step-3-FQDN> port: 27017 ssl: mode: requireSSL PEMKeyFile: 'C:\opt\certs\mdb.pem' CAFile: 'C:\opt\certs\mdbca.crt' clusterFile: 'C:\opt\certs\mdb.pem' security: clusterAuthMode: x509 storage: dbPath: 'C:\data\db'
Si prefiere iniciar con opciones de línea de comandos en mongod mongosqld lugar de un archivo de configuración, consulte para ver opciones equivalentes.
Pruebe su conexión con el mongo shell.
Conéctese a su servidor con el shell mongo para probar su conexión TLS. Tu comando mongo necesita las siguientes opciones de TLS:
Opción | Valor |
|---|---|
Ninguno | |
| |
|
.\mongo.exe --ssl --host <step3-common-name> ^ --sslCAFile "C:\opt\certs\mdbca.crt" ^ --sslPEMKeyFile "C:\opt\certs\mdb.pem"
Edita tus opciones de manera adecuada.
Cree una clave y un CSR para BI Connector.
La entrada Common Name para este CSR debe coincidir con el FQDN del servidor donde ejecutas mongosqld.
Nota
La entrada de Common Name para este CSR debe ser diferente de la entrada de Common Name para el primer CSR que creaste en el paso 2.
Inicie la aplicación OpenSSL e ingrese el siguiente comando en el indicador de OpenSSL:
req -new -nodes -newkey rsa:2048 -keyout .\bi.key -out .\bi.csr
Inicio mongosqld
Su archivo de configuración mongosqld requiere varias opciones específicas de TLS TLS. Sus valores pueden variar, dependiendo de dónde creó sus certificados TLS y archivos .pem.
Opción | Valor |
|---|---|
| |
| |
| |
| |
| |
|
El siguiente ejemplo de archivo de configuración utiliza archivos ubicados en el directorio C:\opt\certs. Especifica un nombre de usuario y una contraseña que corresponden a un usuario de MongoDB con permisos suficientes para ejecutar mongosqld y leer de la base de datos test.
systemLog: logAppend: false path: 'C:\logs\mongosqld.log' verbosity: 2 security: enabled: true mongodb: net: uri: <step-3-FQDN> auth: username: <username> password: <password> ssl: enabled: true PEMKeyFile: 'C:\opt\certs\mdb.pem' CAFile: 'C:\opt\certs\mdbca.crt' net: bindIp: localhost port: 3307 ssl: mode: 'requireSSL' PEMKeyFile: 'C:\opt\certs\bi.pem' CAFile: 'C:\opt\certs\mdbca.crt' schema: sample: namespaces: 'test.*'
Inicie mongosqld con la opción --config para utilizar un archivo de configuración.
.\mongosqld --config C:\path\to\mongosqld.conf
Prueba con un ODBC DSN.
Para crear un DSN ODBC que se conecte a través de TLS, siga las instrucciones del tutorial de DSN y configure el nuevo DSN con la información de la ruta de su certificado TLS.

Nota
No necesita ingresar una ruta de certificado en el SSL Certificate .
En la pestaña Connection de la pantalla de configuración DSN, marque la casilla etiquetada como Enable Cleartext Authentication.

Haga clic en el botón Test para probar su conexión ODBC.
Una vez que haya configurado su DSN, puede usarlo para conectarse a cualquiera de varias herramientas de BI, como Power BI o Qlik Sense.
Generar una Autoridad Certificadora autofirmada.
El siguiente comando genera y exporta una clave privada a
mdbprivate.key.openssl genrsa -out /opt/certs/mdbprivate.key -aes256 \ -passout pass:password El siguiente comando genera y entrega un archivo de autoridad de certificación a
mdbca.crt.El siguiente comando solicita al usuario que introduzca varios datos que se incorporan a la solicitud de certificado. Uno de los campos se llama
Common Name, que corresponde a un nombre de dominio completo (FQDN). La entradaCommon Namedel certificado generado en este paso del tutorial debe ser diferente de la entradaCommon Namede los certificados generados en los pasos 3 y 9.openssl req -x509 -new -key /opt/certs/mdbprivate.key \ -days 1000 -out /opt/certs/mdbca.crt \ -passin pass:password
Ahora tenemos dos archivos: el archivo de autoridad de certificación mdbca.crt y la clave mdbprivate.key utilizada para firmar esa solicitud.
Genere un certificado PEM para el servidor MongoDB.
El siguiente comando genera una clave para el proceso mongod y una Solicitud de Firma de Certificado (CSR). La respuesta Common Name debe ser el Nombre de dominio totalmente calificado (FQDN) del host donde se ejecuta la instancia de mongod, como www.example.com. Para determinar el FQDN de su servidor, utilice hostname -f en el símbolo del sistema.
Es posible que se le solicite que ingrese una contraseña de desafío para el elemento Extra
Attribute. Para este tutorial, puede dejar este elemento en blanco.
openssl req -new -nodes -newkey rsa:2048 -keyout /opt/certs/mdb.key \ -out /opt/certs/mdb.csr
Crea un archivo PEM para el servidor de MongoDB.
Un archivo .pem consta de una clave y un certificado concatenados. Para crear un archivo .pem para que tu instancia de MongoDB lo use, ingresa el siguiente comando en el directorio /opt/certs/:
cat /opt/certs/mdb.key /opt/certs/mdb.crt > /opt/certs/mdb.pem
Ahora debería tener los siguientes archivos en su directorio de certificados:
mdb.crt mdb.csr mdb.key mdb.pem mdbca.crt mdbprivate.key
Si falta alguno, vuelve y revisa los pasos anteriores, comprobando si hay errores.
Actualiza el archivo de configuración mongod.
Para configurar mongod para exigir TLS en las conexiones entrantes, modifique el archivo de configuración como se indica a continuación. Tus valores pueden variar, dependiendo de dónde creaste tus archivos TLS.
Opción | Valor |
|---|---|
| |
| |
| |
| |
|
|
Ejemplo
El siguiente archivo de configuración contiene directivas para conexiones TLS y autenticación x.509
Es posible que su archivo de configuración requiera opciones adicionales o diferentes.
systemLog: destination: file path: '/data/mongod.log' logAppend: true processManagement: fork: true pidFilePath: '/data/mongod.pid' net: bindIp: localhost port: 27017 ssl: mode: requireSSL PEMKeyFile: '/opt/certs/mdb.pem' CAFile: '/opt/certs/mdbca.crt' clusterFile: '/opt/certs/mdb.pem' security: clusterAuthMode: x509 storage: dbPath: '/data'
Si prefiere iniciar con opciones de línea de comandos en mongod mongosqld lugar de un archivo de configuración, consulte para ver opciones equivalentes.
Pruebe su conexión con el mongo shell.
Conéctese a su servidor con el shell mongo para probar su conexión TLS. Tu comando mongo necesita las siguientes opciones de TLS:
Opción | Valor |
|---|---|
Ninguno | |
| |
|
mongo --tls --host <step3-common-name> \ --tlsCAFile /opt/certs/mdbca.crt \ --tlsPEMKeyFile /opt/certs/mdb.pem
Edita tus opciones de manera adecuada.
Cree una clave y un CSR para BI Connector.
La entrada Common Name para este CSR debe coincidir con el FQDN del host donde se ejecuta mongosqld. Para determinar el FQDN de tu host, utiliza hostname -f en el símbolo del sistema.
Es posible que se le solicite que ingrese una contraseña de desafío para el elemento Extra
Attribute. Para este tutorial, puede dejar este elemento en blanco.
Nota
La Common Name entrada para esta CSR debe ser diferente de la Common Name entrada para la primera CSR que creó en el 2 paso.
openssl req -new -nodes -newkey rsa:2048 \ -keyout /opt/certs/bi.key \ -out /opt/certs/bi.csr
mongosqldInicio.
Su mongosqld archivo de configuración requiere varias opciones específicas de TLS. Sus valores pueden variar según dónde haya creado sus archivos TLS.
Opción | Valor |
|---|---|
| |
| |
| |
| |
| |
|
Ejemplo
El siguiente archivo de configuración utiliza archivos ubicados en el /opt/certs/ directorio. Especifica un nombre de usuario y una contraseña que corresponden a un usuario de MongoDB con permisos suficientes para ejecutar y leer de mongosqld la test base de datos.
systemLog: logAppend: false path: './logs/mongosqld.log' verbosity: 2 security: enabled: true mongodb: net: uri: <step9-common-name> auth: username: <username> password: <password> ssl: enabled: true PEMKeyFile: '/opt/certs/mdb.pem' CAFile: '/opt/certs/mdbca.crt' net: bindIp: localhost port: 3307 ssl: mode: 'requireSSL' PEMKeyFile: '/opt/certs/bi.pem' CAFile: '/opt/certs/mdbca.crt' schema: sample: namespaces: 'test.*'
Inicie mongosqld con la opción --config para utilizar un archivo de configuración.
mongosqld --config /path/to/mongosqld.conf