Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Configura TLS para BI Connector

Para que BI Connector transmita los datos de forma segura, deberías habilitar el cifrado Transport Layer Security (TLS) en tu instancia de MongoDB, tu mongosqld instancia y en tu herramienta de BI. Una descripción completa de La configuración de TLS está fuera del alcance de este documento, pero este tutorial describe el proceso para crear tus propios certificados TLS con 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).

  • Un usuario de MongoDB con los permisos necesarios para ejecutar mongosqld.

  • Una instancia de mongod que puedes iniciar y detener.

  • Una instancia mongosqld que puede iniciar y detener.

  • OpenSSL

  • La MySQL shell

    Tip

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.

Este tutorial contiene instrucciones sobre cómo crear varios archivos que permiten que un proceso mongosqld acepte conexiones cifradas con OpenSSL desde un cliente SQL, como el shell de MySQL, y establecer 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

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.

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

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 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é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

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 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 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 TLS. Sus valores pueden variar, dependiendo de dónde creó sus 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 a través de TLS, sigue las instrucciones en el tutorial de DSN y configura el nuevo DSN con la información de la ruta del certificado TLS.

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

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.

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 haya configurado su DSN, puede utilizarlo para conectarse a cualquiera de 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 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 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 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

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 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é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

/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 has creado 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 hayas creado 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

En esta página