Docs Menu
Docs Home
/ /
/ / /

Configurar instancias de MongoDB para TLS/SSL en implementaciones autogestionadas

Este documento le ayuda a configurar una nueva instancia de MongoDB para que admita TLS/SSL. Para obtener instrucciones sobre cómo actualizar un clúster que actualmente no usa TLS/SSL a uno que sí lo use, consulte Actualice un clúster para utilizar TLS/SSL en su lugar.

Para configurar un entorno de desarrollo local con TLS/SSL, consulta Desarrollar MongoDB localmente con TLS.

MongoDB utiliza las librerías nativas de TLS/SSL OS:

Plataforma
Biblioteca TLS/SSL

Windows

Canal seguro (Schannel)

Linux/BSD

OpenSSL

macOS

Transporte seguro

Nota

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

  • El cifrado TLS/SSL de MongoDB solo permite el uso de cifrados TLS/SSL fuertes con una longitud de clave mínima de 128 bits para todas las conexiones.

  • Las compilaciones heredadas de MongoDB para Linux de 64 bits (x64) no incluyen compatibilidad con 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 uso en producción, la implementación de MongoDB debe utilizar certificados válidos generados y firmados por una autoridad certificadora. El usuario o la organización pueden generar y mantener una autoridad de certificación independiente, o utilizar certificados generados por proveedores de TLS de terceros. La obtención y gestión de certificados está fuera del alcance de esta documentación.

Cuando TLS está habilitado, use certificados de miembro para verificar la pertenencia a conexiones internas en un clúster fragmentado o un conjunto de réplicas. Puede configurar las rutas de los archivos de certificados de miembro con net.tls.clusterFile net.tls.certificateKeyFile Opciones y. Los miembros tienen los siguientes requisitos de configuración:

  • La configuración del nodo del clúster debe especificar un valor no vacío para al menos uno de los atributos utilizados para la autenticación. Por defecto, MongoDB acepta:

    • la organización (O)

    • la Unidad Organizativa (OU)

    • El componente del dominio (DC)

    MongoDB verifica que las entradas coincidan exactamente en todos los certificados de nodo. Si enumeras varios valores de OU, todos los certificados deben usar una lista idéntica.

    Se pueden especificar atributos alternativos para usar en la autenticación al configurar net.tls.clusterAuthX509.extensionValue.

  • La configuración de los nodos del clúster debe incluir el mismo net.tls.clusterAuthX509.attributes y usar valores coincidentes. El orden de los atributos no importa. El siguiente ejemplo configura O y OU, pero no DC:

    net:
    tls:
    clusterAuthX509:
    attributes: O=MongoDB, OU=MongoDB Server

Nota

Si estableces el parámetro enforceUserClusterSeparation en false, se aplican los siguientes comportamientos:

  • No puedes establecer clusterAuthMode en una opción que permita X.509 o el servidor no arrancará. El servidor solo se iniciará si clusterAuthMode está keyFile.

  • Un cliente puede crear un usuario en la base de datos $external cuyos atributos de O/OU/DC coincidan con los atributos configurados del servidor para la pertenencia al clúster.

  • Un cliente que presenta un certificado del nodo ahora puede intentar la autenticación MONGODB-X509 como usuario en la base de datos $external.

Para establecer el parámetro enforceUserClusterSeparation en false, ejecute el siguiente comando durante el inicio:

mongod --setParameter enforceUserClusterSeparation=false

Los certificados tienen los siguientes requisitos:

  • Una única Autoridad Certificadora (CA) debe emitir todos los certificados X.509 para los miembros de un clúster o de un set de réplicas.

  • Al menos una de las entradas del nombre alternativo del sujeto (SAN) debe coincidir con el nombre de host del servidor usado por otros miembros del clúster. Al comparar SAN, MongoDB puede comparar nombres DNS o direcciones IP.

    Si no especifica subjectAltName, MongoDB compara el nombre común (CN). Sin embargo, este uso del CN ​​está obsoleto. RFC2818

El uso de clave y el uso extendido de clave son extensiones X.509 que definen y restringen estrictamente el uso de la clave asociada a un certificado. Ambas extensiones son opcionales. Si tlsCertificateKeyFile o tlsClusterFile apuntan a certificados que omiten estas extensiones, no se aplican restricciones en el uso del certificado.

Si los certificados X.509 utilizados para tlsCertificateKeyFile o tlsClusterFile incluyen la extensión de Uso extendido de clave (EKU), estos deben cumplir con las siguientes reglas:

  • tlsCertificateKeyFile deben incluir serverAuth en EKU.

    extendedKeyUsage = serverAuth
  • tlsClusterFile debes incluir clientAuth en EKU:

    extendedKeyUsage = clientAuth
  • Si se omite tlsClusterFile y solo se configura tlsCertificateKeyFile, tlsCertificateKeyFile deben incluir tanto serverAuth como clientAuth en EKU:

    extendedKeyUsage = clientAuth, serverAuth

Si los certificados X.509 utilizados para tlsCertificateKeyFile o tlsClusterFile incluyen la extensión de Uso de clave (KU), esta se debe configurar de la siguiente manera:

  • tlsCertificateKeyFile debe contener digitalSignature, keyEncipherment y keyAgreement en su extensión KU:

    keyUsage = digitalSignature, keyEncipherment, keyAgreement
  • tlsClusterFile debe contener digitalSignature en su extensión KU:

    keyUsage = digitalSignature

Al establecer una conexión TLS/SSL, el mongod / mongos presenta un archivo de clave de certificado a sus clientes para establecer su identidad. [1] El archivo de llaves del certificado contiene un certificado de llave pública y su llave privada asociada, pero solo el componente público se revela al cliente.

MongoDB puede utilizar cualquier certificado TLS/SSL válido emitido por una autoridad de certificación o un certificado autofirmado. Si se usa un certificado autofirmado, aunque el canal de comunicación estará cifrado para evitar la interceptación de la conexión, no habrá ninguna validación de la identidad del servidor. Esto deja al usuario vulnerable a un ataque de intermediario. El uso de un certificado firmado por una autoridad de certificación de confianza permitirá a los drivers de MongoDB verificar la identidad del servidor.

En general, evite usar certificados autofirmados a menos que la red sea de confianza.

Con respecto a los certificados para los miembros del set de réplicas y del clúster, se aconseja utilizar certificados diferentes en servidores distintos. Esto minimiza la exposición de la llave privada y permite la validación del nombre de host.

Nota

Si una implementación de MongoDB no está configurada para usar un archivo de CA, omite la validación del certificado del cliente.

[1] Para el modo FIPS, se debe garantizar que el certificado sea compatible con FIPS (es decir, que use un algoritmo compatible con FIPS) y que la llave privada cumpla con el estándar PKCS#8. Si se necesita convertir una llave privada al formato PKCS#8, existen varias herramientas de conversión, como openssl pkcs8 y otras.

Nota

MongoDB proporciona configuraciones net.tls (y opciones de línea de comandos --tls) que corresponden a las configuraciones net.ssl (y opciones de línea de comandos --ssl). La nueva configuración de tls proporciona una funcionalidad idéntica a la configuración de ssl, ya que MongoDB siempre ha sido compatible con TLS 1.0 y versiones posteriores.

Los procedimientos en esta sección utilizan la configuración de net.tls. Para los procedimientos que utilizan el alias net.ssl, consultar Procedimientos (con la configuración net.ssl).

Para configurar MongoDB con TLS/SSL, necesitas un solo archivo PEM que contenga tanto la llave privada como la cadena completa de certificados.

Si tienes datos de certificado sin procesar, como una llave privada privkey.pem y un archivo de cadena de certificados fullchain.pem, puedes crear el archivo PEM requerido concatenando estos archivos:

cat privkey.pem fullchain.pem > mongodb.pem

El archivo mongodb.pem resultante debe contener la llave privada y la cadena de certificados con sus límites de encapsulación RFC-7468 completos, BEGIN y END.

En tu configuración de MongoDB, proporciona la ruta al archivo mongodb.pem como el valor del net.tls.certificateKeyFile.

Además, apunta la configuración de net.tls.CAFile al archivo de cadena completo fullchain.pem, que contiene la cadena de certificados para verificar el certificado del cliente.

La siguiente sección configura mongod / mongos para usar conexiones TLS/SSL. Con estos ajustes TLS/SSL, mongod / mongos presenta su archivo de clave de certificado al cliente. Sin embargo, la mongod / mongos no requiere un archivo de clave de certificado del cliente para verificar la identidad del cliente. Para requerir el archivo de clave de certificado del cliente, consulta Configurar mongod y mongos con Validación del certificado del cliente en su lugar.

Nota

El procedimiento utiliza la configuración de net.tls. Para los procedimientos que utilizan la configuración net.ssl, consulta Procedimientos (Uso de la configuración net.ssl).

Para utilizar conexiones TLS/SSL, se deben incluir las siguientes configuraciones TLS/SSL en el archivo de configuración de la instancia de mongod / mongos :

Configuración
notas

Se debe establecer en requireTLS.

Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puede especificar el valor allowTLS o preferTLS para configurar el uso de modos mixtos TLS/SSL en un puerto. Consultar net.tls.mode para más detalles.

Si configuras --tlsMode a cualquier valor distinto de disabled, MongoDB usa el certificado especificado en net.tls.certificateKeyFile para la autenticación tanto del servidor como del cliente en las conexiones internas del set de réplicas. Esta configuración del certificado se aplica independientemente de si estableces security.clusterAuthMode en X.509.

Se debe establecer la ruta del archivo que contiene el certificado y la clave TLS/SSL.

El archivo PEM debe contener el certificado TLS y su llave privada asociada con sus líneas completas de límite de encapsulación RFC-7468 BEGIN y END.

La instancia mongod / mongos presenta este archivo a los clientes para establecer la identidad de la instancia.

Por ejemplo, considere el siguiente archivo de configuración para una mongod instancia:

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

Se pueden usar los almacenes de certificados SSL del sistema para Windows y macOS. Para usar el almacén de certificados SSL del sistema, se debe especificar net.tls.certificateSelector en lugar de especificar el archivo de clave del certificado.

Configuración
notas

Se debe establecer en requireTLS.

Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puede especificar el valor allowTLS o preferTLS para configurar el uso de modos mixtos TLS/SSL en un puerto. Consultar net.tls.mode para más detalles.

Si configuras --tlsMode a cualquier valor distinto de disabled, MongoDB usa el certificado especificado en net.tls.certificateKeyFile para la autenticación tanto del servidor como del cliente en las conexiones internas del set de réplicas. Esta configuración del certificado se aplica independientemente de si estableces security.clusterAuthMode en X.509.

Configura la propiedad (ya sea subject o thumbprint) y el valor.

Esta configuración se utiliza para seleccionar el certificado. Consulta net.tls.certificateSelector para más detalles.

Por ejemplo, considere el siguiente archivo de configuración para una mongod instancia:

net:
tls:
mode: requireTLS
certificateSelector: subject="<CertificateCommonName>"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

Una mongod instancia que utilice la configuración anterior solo puede aceptar conexiones TLS/SSL:

mongod --config <path/to/configuration/file>

Consulte Conectar a instancias de MongoDB usando cifrado para obtener más información sobre cómo conectarse con TLS/SSL.

Tip

También se puede configurar mongod y mongos usando opciones de línea de comandos en lugar del archivo de configuración:

La siguiente sección configura mongod / mongos para que use conexiones TLS/SSL y realice la validación del certificado del cliente. Con estas configuraciones de TLS/SSL:

  • mongod / mongos presenta su archivo de clave de certificado al cliente para su verificación.

  • mongod / mongos requiere un archivo de clave de certificado del cliente para verificar la identidad del cliente.

Nota

El procedimiento utiliza la configuración net.tls. Para los procedimientos que utilizan la configuración net.ssl, consulta Procedimientos (Uso de la configuración net.ssl).

Para utilizar conexiones TLS/SSL y realizar la validación de certificados del cliente, incluya los siguientes ajustes TLS/SSL en el mongod mongos archivo de configuración de la instancia /:

Nota

Puedes utilizar los almacenes de certificados SSL del sistema para Windows y macOS. Para usar el almacén de certificados SSL del sistema, especifica net.ssl.certificateSelector en lugar de especificar el archivo de clave del certificado.

Configuración
notas

Se debe establecer en requireTLS.

Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puede especificar el valor allowTLS o preferTLS para configurar el uso de modos mixtos TLS/SSL en un puerto. Consultar net.tls.mode para más detalles.

Si configuras --tlsMode a cualquier valor distinto de disabled, MongoDB usa el certificado especificado en net.tls.certificateKeyFile para la autenticación tanto del servidor como del cliente en las conexiones internas del set de réplicas. Esta configuración del certificado se aplica independientemente de si estableces security.clusterAuthMode en X.509.

Se debe establecer la ruta del archivo que contiene el certificado y la clave TLS/SSL.

El archivo PEM debe contener el certificado TLS y su llave privada asociada con sus líneas completas de límite de encapsulación RFC-7468 BEGIN y END.

La instancia mongod / mongos presenta este archivo a los clientes para establecer la identidad de la instancia.

Establezca la ruta del archivo que contiene la cadena de certificados para verificar los certificados de cliente.

La instancia mongod / mongos utiliza este archivo para verificar los certificados presentados por sus clientes. La cadena de certificados incluye el certificado de la Autoridad Certificadora raíz.

Importante

Al iniciar una instancia mongod con TLS/SSL activado, debes especificar un valor para la bandera --tlsCAFile, la opción de configuración net.tls.CAFile o el parámetro tlsUseSystemCA.

--tlsCAFile, tls.CAFile, y tlsUseSystemCA son mutuamente excluyentes.

Por ejemplo, considere el siguiente archivo de configuración para una mongod instancia:

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

Una instancia de mongod que utiliza la configuración anterior solo puede aceptar conexiones TLS/SSL y requiere un certificado válido de sus clientes:

mongod --config <path/to/configuration/file>

Los clientes deben especificar las conexiones TLS/SSL y presentar su archivo de clave de certificado a la instancia. Consulta Conectar a instancias de MongoDB que requieren certificados de cliente para obtener más información sobre cómo conectarte con TLS/SSL.

Tip

También se puede configurar mongod y mongos usando opciones de línea de comandos en lugar del archivo de configuración:

Nota

El procedimiento utiliza la configuración de net.tls. Para los procedimientos que utilizan la configuración net.ssl, consulta Procedimientos (Uso de la configuración net.ssl).

Para evitar que los clientes con certificados revocados se conecten a la instancia mongod o mongos, puedes utilizar una Lista de Revocación de Certificados (CRL).

Para especificar un Archivo CRL, incluye establecido en un archivo que contiene certificados net.tls.CRLFile revocados.

Por ejemplo:

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
CRLFile: /etc/ssl/revokedCertificates.pem

Los clientes que presentan certificados que están listados en el archivo /etc/ssl/revokedCertificates.pem no pueden conectarse.

Tip

También se puede configurar la lista de certificados revocados con la opción de línea de comandos.

En la mayoría de los casos, es importante asegurarse de que los clientes presenten certificados válidos. Sin embargo, si hay clientes que no pueden presentar un certificado de cliente o están en proceso de transición para utilizar un certificado, es posible que solo se desee validar los certificados de los clientes que presentan un certificado.

Nota

El procedimiento utiliza la configuración de net.tls. Para los procedimientos que utilizan la configuración de net.ssl, consulta Procedimientos (Usando la configuración de net.ssl).

Para omitir la validación de certificados de cliente para los clientes que no presentan un certificado, se debe incluir net.tls.allowConnectionsWithoutCertificates configurado en true.

Por ejemplo:

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
allowConnectionsWithoutCertificates: true

Un mongod / mongos que se ejecuta con estos ajustes permite la conexión desde:

  • Clientes que no presenten un certificado.

  • Clientes que presenten un certificado válido.

Nota

Si el cliente presenta un certificado, este debe ser válido.

Todas las conexiones, incluidas aquellas que no han presentado certificados, están cifradas mediante TLS/SSL.

Consultar Configuración de TLS/SSL para clientes para obtener más información sobre las conexiones TLS/SSL para clientes.

Tip

También puede configurar utilizando las opciones de la línea de comandos:

Nota

El procedimiento utiliza la configuración de net.tls. Para los procedimientos que utilizan la configuración de net.ssl, consulta Procedimientos (Usando la configuración de net.ssl).

Para evitar que los servidores de MongoDB acepten conexiones entrantes que usen protocolos específicos, se debe incluir net.tls.disabledProtocols configurado en los protocolos no permitidos.

Por ejemplo, la siguiente configuración impide que mongod / mongos acepten conexiones entrantes que usen TLS1_0 o TLS1_1

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
disabledProtocols: TLS1_0,TLS1_1

Tip

También puede configurar utilizando las opciones de la línea de comandos:

Si los archivos de claves de certificado de mongod / mongos están cifrados, se debe incluir net.tls.certificateKeyFilePassword configurado con la frase de contraseña.

Tip

Para evitar especificar la frase de contraseña en texto claro, puedes utilizar un valor de expansión en el archivo de configuración.

Tip

También puede configurar utilizando las opciones de la línea de comandos:

A partir de MongoDB 5.0, se pueden rotar los siguientes archivos de claves de certificado on-demand:

Para rotar uno o más de estos certificados:

  1. Se debe sustituir el certificado o los certificados que se desean rotar en el sistema de archivos, teniendo en cuenta las siguientes restricciones:

  2. Se debe conectar mongosh a mongod o a la instancia mongos en la que se desee realizar la rotación de certificados.

  3. Se debe ejecutar el comando rotateCertificates o el método de shell db.rotateCertificates() para rotar los certificados utilizados por la mongod o la instancia mongos.

Cuando tiene lugar la rotación de certificados:

  • Las conexiones existentes a la instancia de mongod o mongos no se terminan y continuarán usando los certificados antiguos.

  • Cualquier nueva conexión utilizará los nuevos certificados.

Los archivos de certificado incorrectos, caducados, revocados o ausentes harán que falle la rotación del certificado, pero no invalidarán la configuración TLS existente ni terminarán el proceso mongod o mongos en ejecución.

Antes de MongoDB 5.0, la rotación de certificados requería tiempo de inactividad y se realizaba habitualmente durante las ventanas de mantenimiento.

Consulte rotateCertificates o db.rotateCertificates() para obtener consideraciones adicionales e instrucciones completas de uso.

Nota

TLS/SSL compatible con FIPS está disponible solo en MongoDB Enterprise. Ve Configurar MongoDB para FIPS si deseas obtener más información.

Consultar Configurar MongoDB para FIPS para obtener más detalles.

Para configurar el soporte de TLS/SSL para clientes, consulta Configuración de TLS/SSL para Clientes.

Nota

MongoDB proporciona configuraciones net.tls (y opciones de línea de comandos --tls) que corresponden a las configuraciones net.ssl (y opciones de línea de comandos --ssl). La nueva configuración de tls proporciona una funcionalidad idéntica a la configuración de ssl, ya que MongoDB siempre ha sido compatible con TLS 1.0 y versiones posteriores.

Los procedimientos en esta sección utilizan la configuración de net.ssl. Para los procedimientos que utilizan los alias de net.tls, consulte Procedimientos (Usando la configuración de net.tls).

Para configurar MongoDB con TLS/SSL, necesitas un solo archivo PEM que contenga tanto la llave privada como la cadena completa de certificados.

Si tienes datos de certificado sin procesar, como una llave privada privkey.pem y un archivo de cadena de certificados fullchain.pem, puedes crear el archivo PEM requerido concatenando estos archivos:

cat privkey.pem fullchain.pem > mongodb.pem

El archivo mongodb.pem resultante debe contener la llave privada y la cadena de certificados con sus límites de encapsulación RFC-7468 completos, BEGIN y END.

En tu configuración de MongoDB, proporciona la ruta al archivo mongodb.pem como el valor de la configuración net.ssl.PEMKeyFile.

Además, apunta la configuración de net.ssl.CAFile al archivo de cadena completo fullchain.pem, que contiene la cadena de certificados para verificar el certificado del cliente.

La siguiente sección configura mongod / mongos para usar conexiones TLS/SSL. Con estos ajustes TLS/SSL, mongod / mongos presenta su archivo de clave de certificado al cliente. Sin embargo, la mongod / mongos no requiere un archivo de clave de certificado del cliente para verificar la identidad del cliente. Para requerir el archivo de clave de certificado del cliente, consulta Configurar mongod y mongos con Validación del certificado del cliente en su lugar.

Para usar conexiones TLS/SSL, se deben incluir las siguientes configuraciones TLS/SSL en el archivo de configuración de la instancia de mongod / mongos :

Configuración
notas

net.ssl.mode

Se debe establecer en requireSSL.

Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puedes especificar allowSSL o preferSSL para usar modos mixtos de TLS/SSL. Consulta net.ssl.mode para más detalles.

net.ssl.PEMKeyFile

Configura el archivo .pem que contiene el certificado y la clave TLS/SSL.

El archivo PEM debe contener el certificado TLS y su llave privada asociada con tus líneas completas de límite de encapsulación RFC-7468 BEGIN y END

La instancia mongod / mongos presenta este archivo a los clientes para establecer la identidad de la instancia.

Si la clave está cifrada, especifica la frase de paso (net.ssl.PEMKeyPassword).

Por ejemplo, considere el siguiente archivo de configuración para una mongod instancia:

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

Puedes utilizar los almacenes de certificados SSL del sistema para Windows y macOS. Para usar el almacén de certificados SSL del sistema, especifica net.ssl.certificateSelector en lugar de especificar el archivo de clave del certificado.

Configuración
notas

net.ssl.mode

Se debe establecer en requireSSL.

Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puedes especificar allowSSL o preferSSL para usar modos mixtos de TLS/SSL. Consulta net.ssl.mode para más detalles.

net.ssl.certificateSelector

Configura la propiedad (ya sea subject o thumbprint) y el valor.

Esta configuración se utiliza para seleccionar el certificado. Consulte net.ssl.certificateSelector para más detalles.

Por ejemplo, considere el siguiente archivo de configuración para una mongod instancia:

net:
ssl:
mode: requireSSL
certificateSelector: subject="<CertificateCommonName>"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

Una mongod instancia que utilice la configuración anterior solo puede aceptar conexiones TLS/SSL:

mongod --config <path/to/configuration/file>

Consulte Conectar a instancias de MongoDB usando cifrado para obtener más información sobre cómo conectarse con TLS/SSL.

Tip

También se puede configurar mongod y mongos usando opciones de línea de comandos en lugar del archivo de configuración:

  • Para mongod, consulta --sslMode, --sslPEMKeyFile, y --sslCertificateSelector.

  • Para mongos, consulta: --sslMode, --sslPEMKeyFile y --sslCertificateSelector.

La siguiente sección configura mongod / mongos para que use conexiones TLS/SSL y realice la validación del certificado del cliente. Con estas configuraciones de TLS/SSL:

  • mongod / mongos presenta su archivo de clave de certificado al cliente para su verificación.

  • mongod / mongos requiere un archivo de clave de certificado del cliente para verificar la identidad del cliente.

Para usar conexiones TLS/SSL, se deben incluir las siguientes configuraciones TLS/SSL en el archivo de configuración de la instancia de mongod / mongos :

Nota

Puedes utilizar los almacenes de certificados SSL del sistema para Windows y macOS. Para usar el almacén de certificados SSL del sistema, especifica net.ssl.certificateSelector en lugar de especificar el archivo de clave del certificado.

Configuración
notas

net.ssl.mode

Se debe establecer en requireSSL.

Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puedes especificar allowSSL o preferSSL para usar modos mixtos de TLS/SSL. Consulta net.ssl.mode para más detalles.

net.ssl.PEMKeyFile

Configura el archivo .pem que contiene el certificado y la clave TLS/SSL.

El archivo PEM debe contener el certificado TLS y su llave privada asociada con sus líneas completas de límite de encapsulación RFC-7468 BEGIN y END.

La instancia mongod / mongos presenta este archivo a los clientes para establecer la identidad de la instancia.

Si la clave está cifrada, especifica la frase de paso (net.ssl.PEMKeyPassword).

net.ssl.CAFile

Establezca la ruta del archivo que contiene la cadena de certificados para verificar los certificados de cliente.

La instancia mongod / mongos utiliza este archivo para verificar los certificados presentados por sus clientes. La cadena de certificados incluye el certificado de la Autoridad Certificadora raíz.

Por ejemplo, considere el siguiente archivo de configuración para una mongod instancia:

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

Una instancia de mongod que utiliza la configuración anterior solo puede aceptar conexiones TLS/SSL y requiere un certificado válido de sus clientes:

mongod --config <path/to/configuration/file>

Los clientes deben especificar las conexiones TLS/SSL y presentar su archivo de clave de certificado a la instancia. Consulta Conectar a instancias de MongoDB que requieren certificados de cliente para obtener más información sobre cómo conectarte con TLS/SSL.

Tip

También se puede configurar mongod y mongos usando opciones de línea de comandos en lugar del archivo de configuración:

  • Para mongod, consulta --sslMode, --sslPEMKeyFile, y --sslCAFile.

  • Para mongos, consulta --sslMode, --sslPEMKeyFile, y --sslCAFile.

Para evitar que los clientes con certificados revocados se conecten a la instancia mongod o mongos, puedes utilizar una Lista de Revocación de Certificados (CRL).

Para especificar un archivo CRL, incluye net.ssl.CRLFile configurado en un archivo que contenga certificados revocados.

Por ejemplo:

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
CRLFile: /etc/ssl/revokedCertificates.pem

Los clientes que presentan certificados que están listados en el archivo /etc/ssl/revokedCertificates.pem no pueden conectarse.

Tip

También se puede configurar la lista de certificados revocados con la opción de línea de comandos.

  • Para mongod, consulta --sslCRLFile.

  • Para mongos, consulta --sslCRLFile.

En la mayoría de los casos, es importante asegurarse de que los clientes presenten certificados válidos. Sin embargo, si hay clientes que no pueden presentar un certificado de cliente o están en proceso de transición para utilizar un certificado, es posible que solo se desee validar los certificados de los clientes que presentan un certificado.

Para omitir la validación de certificados de cliente para los clientes que no presentan un certificado, incluye net.ssl.allowConnectionsWithoutCertificates configurado en true.

Por ejemplo:

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
allowConnectionsWithoutCertificates: true

Un mongod / mongos que se ejecuta con estos ajustes permite la conexión desde:

  • Clientes que no presenten un certificado.

  • Clientes que presenten un certificado válido.

Nota

Si el cliente presenta un certificado, este debe ser válido.

Todas las conexiones, incluidas aquellas que no han presentado certificados, están cifradas mediante TLS/SSL.

Consultar Configuración de TLS/SSL para clientes para obtener más información sobre las conexiones TLS/SSL para clientes.

Tip

También puede configurar utilizando las opciones de la línea de comandos:

  • Para mongod, consulta --sslAllowConnectionsWithoutCertificates.

  • Para mongos, consulta --sslAllowConnectionsWithoutCertificates.

Para evitar que los servidores de MongoDB acepten conexiones entrantes que usen protocolos específicos, incluye net.ssl.disabledProtocols configurado en los protocolos no permitidos.

Por ejemplo, la siguiente configuración impide que mongod / mongos acepten conexiones entrantes que usen TLS1_0 o TLS1_1

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
disabledProtocols: TLS1_0,TLS1_1

Tip

También puede configurar utilizando las opciones de la línea de comandos:

  • Para mongod, consulta --sslDisabledProtocols.

  • Para mongos, consulta --sslDisabledProtocols.

Si los archivos de clave de certificado para mongod / mongos están cifrados, incluye net.ssl.PEMKeyPassword configurado con la frase de contraseña.

Tip

También puede configurar utilizando las opciones de la línea de comandos:

  • Para mongod, consulta sslPEMKeyPassword.

  • Para mongos, consulta --sslPEMKeyPassword.

Nota

TLS/SSL compatible con FIPS está disponible solo en MongoDB Enterprise. Ve Configurar MongoDB para FIPS si deseas obtener más información.

Consultar Configurar MongoDB para FIPS para obtener más detalles.

Para configurar el soporte de TLS/SSL para clientes, consulta Configuración de TLS/SSL para Clientes.

Volver

TLS/SSL

Obtén una insignia de habilidad

¡Domina el curso "Seguridad en Redes: Autogestionada" gratis!

Más información