Docs Menu
Docs Home
/ /

Configurar TLS para el conector de BI

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

Utilice estos procedimientos solo para fines de prueba. Su entorno de producción debe usar certificados TLS emitidos por una autoridad de certificación (CA) reconocida.

  • Un usuario de MongoDB con permisos suficientes para mongosqld ejecutar.

  • Una instancia que puedes iniciar y mongod detener.

  • Una instancia que puedes iniciar y mongosqld detener.

  • OpenSSL

  • La MySQL shell

    Tip

Para garantizar la disponibilidad de lectura de sus conjuntos de réplicas de MongoDB y clústeres fragmentados mientras el Conector de BI habilita TLS, utilice un procedimiento de actualización continua. Mientras se actualiza el conjunto de réplicas principal, las aplicaciones deben esperar hasta que se complete el ciclo de conmutación por error y elección.

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.

1
  1. Usando el símbolo del sistema de Windows cmd, cree un directorio para almacenar sus certificados. Este tutorial usa C:\opt\certs.

    mkdir C:\opt\certs
    cd C:\opt\certs
  2. Este tutorial asume que su directorio OpenSSL está en C:\OpenSSL. Si se encuentra en otra parte de su sistema, edite los comandos según corresponda o mueva el directorio a C:\OpenSSL.

    Si su directorio C:\OpenSSL\bin no contiene un archivo de configuración llamado openssl.cfg, cree 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. Configurar una variable de entorno para uso posterior.

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

    cd C:\opt\certs
  2. Inicie 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 envía una clave privada a mdbprivate.key.

    genrsa -out C:\opt\certs\mdbprivate.key -aes256 \
    -passout pass:password
  4. El siguiente comando genera y envía 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 entrada Common Name del certificado generado en este paso del tutorial debe ser diferente de la entrada Common Name de 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.

3

El siguiente comando genera una clave para el uso de mongod TLS del proceso y una CSR. Para este paso, la Common Name respuesta debe ser el FQDN del servidor donde se ejecuta mongod el TLS de la www.example.com instancia, como.

Introduzca el siguiente comando en el indicador de OpenSSL:

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

Introduzca el siguiente comando en el indicador 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 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, vuelva atrás y revise los pasos anteriores para comprobar si hay errores.

6

Para configurar mongod para que requiera TLS en las conexiones entrantes, modifique su archivo de configuración como se indica a continuación. Los valores pueden variar según dónde haya creado sus 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 prefiere iniciar con opciones de línea de comandos en mongod mongosqld lugar de un archivo de configuración, consulte para ver 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. El 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"

Edite sus opciones apropiadamente.

9

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

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.

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
10

Introduzca el siguiente comando en el indicador de OpenSSL:

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

Salga de la aplicación OpenSSL e ingrese el siguiente comando en el indicador cmd:

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

Su mongosqld archivo de configuración requiere varias opciones específicas de TLS. Sus valores pueden variar según dónde haya creado sus certificados TLS y .pem archivos.

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 archivo de configuración de ejemplo utiliza archivos ubicados en el C:\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: '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 para utilizar un archivo de --config configuración.

.\mongosqld --config C:\path\to\mongosqld.conf
13

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.

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

Nota

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

En la pestaña Connection de la pantalla de configuración de DSN, marque la casilla denominada 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 usarlo para conectarse a cualquiera de varias herramientas de BI, como Power BI o Qlik Sense.

1

Cree un directorio para sus certificados. Este tutorial /opt/certs usa. El directorio de certificados debe ser legible para el usuario del sistema que ejecuta los programas mongod mongosqld y.

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

    openssl genrsa -out /opt/certs/mdbprivate.key -aes256 \
    -passout pass:password
  2. El siguiente comando genera y envía 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 entrada Common Name del certificado generado en este paso del tutorial debe ser diferente de la entrada Common Name de 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.

3

El siguiente comando genera una clave para el proceso y una solicitud de firma de certificado (CSR).mongod La Common Name respuesta debe ser el nombre de dominio completo (FQDN) delhost donde se mongod ejecuta la www.example.com instancia, por ejemplo,. 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
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 su instancia de MongoDB, introduzca 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, vuelva atrás y revise los pasos anteriores para comprobar si hay errores.

6

Para configurar mongod para que requiera TLS en las conexiones entrantes, modifique su archivo de configuración como se indica a continuación. Los valores pueden variar según dónde haya creado sus 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 prefiere iniciar con opciones de línea de comandos en mongod mongosqld lugar de un archivo de configuración, consulte para ver 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. El 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

Edite sus opciones apropiadamente.

9

La Common Name entrada de esta CSR debe coincidir con el FQDN del host donde se ejecuta.mongosqld Para determinar el FQDN de su host, 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.

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

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 /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 para utilizar un archivo de --config configuración.

mongosqld --config /path/to/mongosqld.conf
13

Para conectarse a su instancia mongosqld, inicie el shell MySQL con las siguientes opciones de línea de comando.

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

En esta página