Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
TLS/SSL

Actualizar un clúster para usar TLS/SSL

El servidor MongoDB admite la escucha de conexiones cifradas y no cifradas con TLS/SSL en el mismo puerto TCP. Esto permite que las actualizaciones de clústeres MongoDB utilicen conexiones cifradas con TLS/SSL.

Nota

MongoDB deshabilita el soporte para el cifrado TLS 1.0 en sistemas donde TLS 1.1+ está disponible.

Importante

Una descripción completa de los certificados TLS/SSL, PKI (Infraestructura de Llave Pública) y la Autoridad de Certificación está fuera del alcance de este documento. Esta página asume conocimientos previos de TLS/SSL, así como el acceso a certificados válidos.

Para actualizar de un clúster de MongoDB que no utiliza cifrado TLS/SSL a uno que utiliza solo cifrado TLS/SSL, utiliza el siguiente proceso de actualización continua.

Nota

Los procedimientos en esta sección usan la configuración/opción tls. Para procedimientos que utilizan sus alias ssl, consulta Procedimiento (usando la configuración ssl).

Los ajustes/opciones de tls proporcionan una funcionalidad idéntica a las opciones de ssl ya que MongoDB siempre ha admitido TLS 1.0 y posteriores.

  1. Para cada nodo de un clúster, inicie el nodo con la opción de línea de comandos --tlsMode o la opción del archivo de configuración net.tls.mode establecido en allowTLS. La configuración allowTLS permite que el nodo acepte tanto TLS/SSL como conexiones entrantes no TLS/no SSL. Sus conexiones con otros servidores no utilizan TLS/SSL. Incluye otras opciones TLS/SSL [2] así como cualquier otra opción que sea necesaria para tu configuración específica.

    Nota

    mongod y mongos se enlazan a localhost por defecto. Si los miembros de la implementación se ejecutan en hosts diferentes o si se desea que clientes remotos se conecten a la implementación, se debe especificar --bind_ip o net.bindIp.

    Por ejemplo:

    mongod --replSet <name> --tlsMode allowTLS --tlsCertificateKeyFile <TLS/SSL certificate and key file> --tlsCAFile <path to root CA PEM file> <additional options>

    Para especificar estas opciones en el archivo de configuración, incluye la siguiente configuración en el archivo:

    net:
    tls:
    mode: allowTLS
    certificateKeyFile: <path to TLS/SSL certificate and key PEM file>
    CAFile: <path to root CA PEM file>

    Actualice todos los nodos del clúster a estas configuraciones.

  2. Cambia todos los clientes para que utilicen TLS/SSL. Consulta la Configuración TLS/SSL para clientes.

  3. Para cada nodo de un clúster, utiliza el comando setParameter para actualizar el tlsMode a preferTLS. [1] Con preferTLS como su net.tls.mode, el nodo acepta tanto conexiones entrantes TLS/SSL como no TLS/no SSL, y sus conexiones a otros servidores usan TLS/SSL. Por ejemplo:

    db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } )

    Actualice todos los nodos del clúster a estas configuraciones.

    En este punto, todas las conexiones deben estar utilizando TLS/SSL.

  4. Para cada nodo del clúster, use el comando setParameter para actualizar el tlsMode a requireTLS. [1] Con requireTLS como su net.tls.mode, el nodo rechazará cualquier conexión que no sea TLS/SSL. Por ejemplo:

    db.adminCommand( { setParameter: 1, tlsMode: "requireTLS" } )
  5. Después de actualizar todos los nodos, edite el archivo de configuración con las configuraciones TLS/SSL adecuadas para garantizar que en los reinicios posteriores, el clúster utilice TLS/SSL.

Importante

Una descripción completa de los certificados TLS/SSL, PKI (Infraestructura de Llave Pública) y la Autoridad de Certificación está fuera del alcance de este documento. Esta página asume conocimientos previos de TLS/SSL, así como el acceso a certificados válidos.

Para actualizar de un clúster de MongoDB que no utiliza cifrado TLS/SSL a uno que utiliza solo cifrado TLS/SSL, utiliza el siguiente proceso de actualización continua.

Nota

Los procedimientos en esta sección usan la configuración/opción ssl. Para procedimientos que utilizan sus alias tls, consulta Procedimiento (usando la configuración tls).

Los ajustes/opciones de tls proporcionan una funcionalidad idéntica a las opciones de ssl ya que MongoDB siempre ha admitido TLS 1.0 y posteriores.

  1. Para cada nodo de un clúster, inicia el nodo con la opción de la línea de comandos --sslMode o la opción del archivo de configuración net.ssl.mode establecida en allowSSL. La configuración allowSSL permite que el nodo acepte tanto conexiones entrantes TLS/SSL como no TLS/no SSL. Sus conexiones con otros servidores no utilizan TLS/SSL. Incluye otras opciones de TLS/SSL [2] así como cualquier otra opción que se requiera para tu configuración específica.

    Nota

    mongod y mongos se enlazan a localhost por defecto. Si los miembros de la implementación se ejecutan en hosts diferentes o si se desea que clientes remotos se conecten a la implementación, se debe especificar --bind_ip o net.bindIp.

    Por ejemplo:

    mongod --replSet <name> --sslMode allowSSL --sslPEMKeyFile <path to TLS/SSL Certificate and key PEM file> --sslCAFile <path to root CA PEM file> <additional options>

    Para especificar estas opciones en el archivo de configuración, incluye la siguiente configuración en el archivo:

    net:
    ssl:
    mode: <allowSSL>
    PEMKeyFile: <path to TLS/SSL certificate and key PEM file>
    CAFile: <path to root CA PEM file>

    Actualice todos los nodos del clúster a estas configuraciones.

  2. Cambia todos los clientes para que utilicen TLS/SSL. Consulta la Configuración TLS/SSL para clientes.

  3. Para cada nodo de un clúster, use el comando para setParameter actualizar sslMode preferSSLa. []1 Con preferSSL como net.ssl.mode su, el nodo acepta conexiones entrantes tanto TLS/SSL como no TLS/no SSL, y sus conexiones a otros servidores usan TLS/SSL. Por ejemplo:

    db.adminCommand( { setParameter: 1, sslMode: "preferSSL" } )

    Actualice todos los nodos del clúster a estas configuraciones.

    En este punto, todas las conexiones deben estar utilizando TLS/SSL.

  4. Para cada nodo del clúster, use el comando setParameter para actualizar el sslMode a requireSSL. [1] Con requireSSL como net.ssl.mode, el nodo rechaza cualquier conexión que no sea TLS/SSL. Por ejemplo:

    db.adminCommand( { setParameter: 1, sslMode: "requireSSL" } )
  5. Después de actualizar todos los nodos, edite el archivo de configuración con las configuraciones TLS/SSL adecuadas para garantizar que en los reinicios posteriores, el clúster utilice TLS/SSL.

[1](1, 2, 3, 4) Como alternativa a usar el comando setParameter, también puedes reiniciar los nodos con las opciones y valores TLS/SSL apropiados.
[2](1, 2) Puede utilizar almacenes de certificados SSL del sistema para Windows y macOS. Para usar el almacén de certificados SSL del sistema, use:
  • net.tls.certificateSelector (o la opción de la línea de comandos --tlsCertificateSelector) en lugar de net.tls.certificateKeyFile (o la opción de la línea de comandos``--certificateKeyFile``).
  • net.ssl.certificateSelector (o la opción de línea de comandos --sslCertificateSelector) en lugar de net.ssl.PEMKeyFile (o la opción de línea de comandos ``--sslPEMKeyFile``).
Al utilizar el almacén de certificados SSL del sistema, se emplea OCSP (Protocolo de estado de certificados en línea) para validar el estado de revocación de los certificados.

Volver

Configurar Clientes