Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Configura TLS para BI Connector

Para que BI Connector transmita los datos de forma segura, deberías habilitar el cifrado de Seguridad de la Capa de Transporte (TLS) en tu instancia de MongoDB, tu instancia de mongosqld y en tu herramienta de BI. Una descripción completa de la configuración de TLS queda fuera del alcance de este documento, pero este tutorial describe el proceso para crear tus propios certificados TLS con fines de prueba y poner en marcha los componentes de MongoDB con TLS habilitado.

Importante

Utiliza estos procedimientos solo con fines de prueba. Su entorno de producción debe utilizar certificados TLS expedidos por una autoridad de certificación (CA) reconocida.

Para garantizar la disponibilidad de lectura de tus sets de réplicas y clústeres de MongoDB mientras BI Connector habilita TLS, utiliza un procedimiento de actualización continua. Mientras se actualiza el primario del set de réplicas, las aplicaciones deben esperar hasta que se complete el ciclo de failover y elección.

Este tutorial contiene instrucciones sobre la creación de varios archivos que permiten que un proceso mongosqld acepte conexiones cifradas con OpenSSL de 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 llave de cifrado y un certificado TLS autofirmado.

1
  1. Usa el símbolo del sistema de Windows cmd para crear un directorio donde almacenar tus certificados. Este tutorial utiliza C:\opt\certs.

    mkdir C:\opt\certs
    cd C:\opt\certs
  2. 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 a C:\OpenSSL.

    Si tu directorio C:\OpenSSL\bin no contiene un archivo de configuración llamado openssl.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
  3. Configura una variable de entorno para usarla más tarde.

    set OPENSSL_CONF=C:\OpenSSL\bin\openssl.cfg
2
  1. Cambia el directorio a C:\opt\certs.

    cd C:\opt\certs
  2. 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>
  3. El siguiente comando genera y exporta una clave privada a mdbprivate.key.

    genrsa -out C:\opt\certs\mdbprivate.key -aes256 \
    -passout pass:password
  4. 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 es un Nombre de Dominio Totalmente Calificado (FQDN). La entrada Common Name para el certificado generado en este paso del tutorial debe ser diferente de la entrada Common Name para 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 que se utilizó para firmar esa solicitud.

3

El siguiente comando genera una clave para que el proceso mongod use TLS y un CSR. Para este paso, la Common Name respuesta debe ser el <span class=\" \">FQDN del servidor donde está tu instancia de <a mongod class=\" \" target=\" \"href=\" \"> <span class=\" \">TLS www.example.comcomo.

Introduce el siguiente comando en el mensaje de OpenSSL:

req -new -nodes -newkey rsa:2048 -keyout .\mdb.key -out .\mdb.csr
4

Introduce el siguiente comando en el mensaje de OpenSSL:

x509 -CA .\mdbca.crt -CAkey .\mdbprivate.key -CAcreateserial -req -days 1000 -in .\mdb.csr -out .\mdb.crt -passin pass:password
5

Un archivo .pem consta de una clave y un certificado concatenados. Para crear un archivo .pem para que lo use tu instancia de MongoDB, sal del aviso de OpenSSL e ingresa el siguiente comando en el aviso cmd en el 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.

6

Para configurar mongod para requerir TLS para las conexiones entrantes, modifique su archivo de configuración como sigue. Tus valores pueden variar, dependiendo de dónde creaste tus archivos TLS.

Opción
Valor

requireSSL

C:\opt\certs\mdb.pem

C:\opt\certs\mdbca.crt

C:\opt\certs\mdb.pem

x509

Ejemplo

El siguiente archivo de configuración contiene directivas para conexiones TLS y autenticación de 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 prefieres iniciar mongod con opciones de línea de comandos en lugar de con un archivo de configuración, consulta mongosqld para opciones equivalentes.

7
mongod.exe --config C:\path\to\mongod.conf
8

Conéctate a tu servidor con la mongo shell para probar tu conexión TLS. Tu comando mongo necesita las siguientes opciones TLS:

Opción
Valor

Ninguno

C:\opt\certs\mdbca.crt (archivo generado en el paso 2d)

C:\opt\certs\mdb.pem (archivo generado en el paso 5)

.\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.

9

La entrada Common Name para este CSR debe coincidir con el FQDN del servidor donde ejecutas mongosqld.

Nota

La entrada Common Name para este CSR debe ser diferente de la entrada Common Name para el primer CSR creado, en el paso 2.

Inicie la aplicación OpenSSL e ingresa el siguiente comando en el símbolo del sistema de OpenSSL:

req -new -nodes -newkey rsa:2048 -keyout .\bi.key -out .\bi.csr
10

Introduce el siguiente comando en el mensaje de OpenSSL:

x509 -CA .\mdbca.crt -CAkey .\mdbprivate.key -CAcreateserial -req -days 1000 -in .\bi.csr -out .\bi.crt -passin pass:password
11

Sal de la aplicación OpenSSL e introduce el siguiente comando en el indicador cmd:

copy .\bi.key + .\bi.crt bi.pem
12

Su archivo de configuración mongosqld requiere varias opciones específicas de TLS. Tus valores pueden variar, dependiendo de dónde hayas creado tus certificados TLS y archivos .pem.

Opción
Valor

true

C:\opt\certs\mdb.pem

C:\opt\certs\mdbca.crt

requireSSL

C:\opt\certs\bi.pem

C:\opt\certs\mdbca.crt

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
13

Para crear un ODBC DSN que se conecte por TLS, sigue las instrucciones del tutorial de DSN y configura el nuevo DSN con la información de la ruta de tu certificado TLS.

Captura de pantalla de la pantalla de configuración de DSN

Nota

No es necesario ingresar una ruta de certificado en el campo SSL Certificate.

En la pestaña Connection de la pantalla de configuración DSN, marque la casilla etiquetada como Enable Cleartext Authentication.

Captura de pantalla de la pantalla de configuración de DSN

Haga clic en el botón Test para probar su conexión ODBC.

Una vez que hayas configurado tu DSN, puedes utilizarlo para conectar con varias herramientas de BI, como Power BI o Qlik Sense.

1

Cree un directorio para guardar sus certificados. Este tutorial utiliza /opt/certs. El directorio de sus certificados debe poder ser leído por el usuario del sistema que ejecute los programas mongod y mongosqld.

mkdir /opt/certs
cd /opt/certs
2
  1. El siguiente comando genera y exporta una clave privada a mdbprivate.key.

    openssl genrsa -out /opt/certs/mdbprivate.key -aes256 \
    -passout pass:password
  2. 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 es un Nombre de Dominio Totalmente Calificado (FQDN). La entrada Common Name para el certificado generado en este paso del tutorial debe ser diferente de la entrada Common Name para 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 que se utilizó para firmar esa solicitud.

3

El siguiente comando genera una clave para que el proceso mongod la use y una Solicitud de Firma de Certificado (CSR). La respuesta Common Name debe ser el nombre de dominio completamente cualificado (FQDN) del host donde se ejecuta su instancia de mongod, como www.example.com. Para determinar el FQDN de su servidor, utilice hostname -f en la línea de comandos.

Es posible que se le solicite que introduzca una contraseña de desafío para el elemento Extra Attribute. Para los fines de 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
4
openssl x509 -CA /opt/certs/mdbca.crt
-CAkey /opt/certs/mdbprivate.key \
-CAcreateserial -req -days 1000 \
-in /opt/certs/mdb.csr -out /opt/certs/mdb.crt \
-passin pass:password
5

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.

6

Para configurar mongod para requerir TLS para las conexiones entrantes, modifique su archivo de configuración como sigue. Tus valores pueden variar, dependiendo de dónde creaste tus archivos TLS.

Opción
Valor

requireSSL

/opt/certs/mdb.pem

/opt/certs/mdbca.crt

/opt/certs/mdb.pem

security.clusterAuthmode

x509

Ejemplo

El siguiente archivo de configuración contiene directivas para conexiones TLS y autenticación de 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 prefieres iniciar mongod con opciones de línea de comandos en lugar de con un archivo de configuración, consulta mongosqld para opciones equivalentes.

7
mongod --config /path/to/mongod.conf
8

Conéctate a tu servidor con la mongo shell para probar tu conexión TLS. Tu comando mongo necesita las siguientes opciones TLS:

Opción
Valor

Ninguno

/opt/certs/mdbca.crt (archivo generado en el paso 2.2)

/opt/certs/mdb.pem (archivo generado en el paso 5)

mongo --tls --host <step3-common-name> \
--tlsCAFile /opt/certs/mdbca.crt \
--tlsPEMKeyFile /opt/certs/mdb.pem

Edita tus opciones de manera adecuada.

9

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 introduzca una contraseña de desafío para el elemento Extra Attribute. Para los fines de este tutorial, puede dejar este elemento en blanco.

Nota

La entrada Common Name para este CSR debe ser diferente de la entrada Common Name para el primer CSR que creaste, en el paso 2.

openssl req -new -nodes -newkey rsa:2048 \
-keyout /opt/certs/bi.key \
-out /opt/certs/bi.csr
10
openssl x509 -CA /opt/certs/mdbca.crt \
-CAkey /opt/certs/mdbprivate.key \
-CAcreateserial -req -days 1000 \
-in /opt/certs/bi.csr -out /opt/certs/bi.crt \
-passin pass:password
11
cat /opt/certs/bi.key /opt/certs/bi.crt > /opt/certs/bi.pem
12

Su archivo de configuración mongosqld requiere varias opciones específicas de TLS. Tus valores pueden variar dependiendo de dónde creaste tus archivos TLS.

Opción
Valor

true

/opt/certs/mdb.pem

/opt/certs/mdbca.crt

requireSSL

/opt/certs/bi.pem

/opt/certs/mdbca.crt

Ejemplo

El siguiente archivo de configuración utiliza archivos ubicados en el directorio /opt/certs/. Especifica un nombre de usuario y una contraseña que corresponden a un usuario de MongoDB con suficientes permisos para ejecutar mongosqld y leer de la base de datos test.

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
13

Para conectarte a tu instancia mongosqld, inicia la shell de MySQL con las siguientes opciones de línea de comandos.

mysql --ssl-mode REQUIRED --ssl-ca=/opt/certs/mdbca.crt \
--enable-cleartext-plugin --port 3307 -u <username> -p