Overview
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 en sistemas donde TLS 1.1+ 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.
Requisitos previos
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.
Autoridades de Certificación
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.
Requisitos del certificado de nodo
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.attributesy usar valores coincidentes. El orden de los atributos no importa. El siguiente ejemplo configuraOyOU, pero noDC:net: tls: clusterAuthX509: attributes: O=MongoDB, OU=MongoDB Server
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 compararSAN, 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:
tlsCertificateKeyFiledeben incluirserverAuthen EKU.extendedKeyUsage = serverAuth tlsClusterFiledebes incluirclientAuthen EKU:extendedKeyUsage = clientAuth Si se omite
tlsClusterFiley solo se configuratlsCertificateKeyFile,tlsCertificateKeyFiledeben incluir tantoserverAuthcomoclientAuthen 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:
tlsCertificateKeyFiledebe contenerdigitalSignature,keyEnciphermentykeyAgreementen su extensión KU:keyUsage = digitalSignature, keyEncipherment, keyAgreement tlsClusterFiledebe contenerdigitalSignatureen su extensión KU:keyUsage = digitalSignature
mongod y mongos archivo de clave de certificado
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. |
Procedimientos (Usando la Configuración de net.tls)
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).
Crea un archivo PEM a partir de datos sin procesar del certificado
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.
Configurar mongod y mongos con un certificado y una clave TLS/SSL
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 Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puede especificar el valor Si configuras | |
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 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 Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puede especificar el valor Si configuras | |
Configura la propiedad (ya sea Esta configuración se utiliza para seleccionar el certificado. Consulta |
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:
Para
mongod, consultar:--tlsMode;--tlsCertificateKeyFile; y--tlsCertificateSelector.Para
mongos, consultar:--tlsMode;--tlsCertificateKeyFile; y--tlsCertificateSelector.
Configurar mongod y mongos con validación de certificado de cliente
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/mongospresenta su archivo de clave de certificado al cliente para su verificación.mongod/mongosrequiere 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 Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puede especificar el valor Si configuras | |
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 La instancia | |
Establezca la ruta del archivo que contiene la cadena de certificados para verificar los certificados de cliente. La instancia |
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:
Para
mongod, consulte--tlsMode,--tlsCertificateKeyFiley--tlsCAFile.Para
mongos, consulta--tlsMode,--tlsCertificateKeyFile,--tlsCAFile.
Bloquear certificados revocados para los clientes
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.
Para
mongod, consulte--tlsCRLFile.Para
mongos, consulte--tlsCRLFile.
Se debe validar solo si un cliente presenta un certificado
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:
Para
mongod, consulte--tlsAllowConnectionsWithoutCertificates.Para
mongos, consulte--tlsAllowConnectionsWithoutCertificates.
Prohibir protocolos
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:
Para
mongod, consulte--tlsDisabledProtocols.Para
mongos, consulte--tlsDisabledProtocols.
Contraseña del certificado TLS/SSL
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:
Para
mongod, consulte--tlsCertificateKeyFilePassword.Para
mongos, consulte--tlsCertificateKeyFilePassword.
Rotación de certificados en línea
A partir de MongoDB 5.0, se pueden rotar los siguientes archivos de claves de certificado on-demand:
CRL (Certificate Revocation List) files(en las plataformas Linux y Windows)
Para rotar uno o más de estos certificados:
Se debe sustituir el certificado o los certificados que se desean rotar en el sistema de archivos, teniendo en cuenta las siguientes restricciones:
Cada nuevo certificado debe tener el mismo nombre de archivo y la misma ruta de archivo que el certificado que está reemplazando.
Si rota un certificado cifrado
TLS Certificate, su contraseña debe ser la misma que la contraseña del certificado antiguo (como se especifica en los ajustes del archivo de configuracióncertificateKeyFilePassword). La rotación de certificados admite a la solicitud de contraseña interactiva.
Se debe conectar
mongoshamongodo a la instanciamongosen la que se desee realizar la rotación de certificados.Se debe ejecutar el comando
rotateCertificateso el método de shelldb.rotateCertificates()para rotar los certificados utilizados por lamongodo la instanciamongos.
Cuando tiene lugar la rotación de certificados:
Las conexiones existentes a la instancia de
mongodomongosno 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.
Ejecutar en moda FIPS
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.
Próximos pasos
Para configurar el soporte de TLS/SSL para clientes, consulta Configuración de TLS/SSL para Clientes.
Procedimientos (Usando la Configuración de net.ssl)
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).
Crea un archivo PEM a partir de datos sin procesar del certificado
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.
Configurar mongod y mongos con un certificado y una clave TLS/SSL
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 |
|---|---|
| Se debe establecer en Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puedes especificar |
| Configura el archivo 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 La instancia Si la clave está cifrada, especifica la frase de paso ( |
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 |
|---|---|
| Se debe establecer en Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puedes especificar |
| Configura la propiedad (ya sea Esta configuración se utiliza para seleccionar el certificado. Consulte |
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.
Configurar mongod y mongos con validación de certificado de cliente
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/mongospresenta su archivo de clave de certificado al cliente para su verificación.mongod/mongosrequiere 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 |
|---|---|
| Se debe establecer en Esta configuración restringe que cada servidor use solo conexiones cifradas TLS/SSL. También puedes especificar |
| Configura el archivo 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 La instancia Si la clave está cifrada, especifica la frase de paso ( |
| Establezca la ruta del archivo que contiene la cadena de certificados para verificar los certificados de cliente. La instancia |
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
Bloquear certificados revocados para los clientes
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.
Se debe validar solo si un cliente presenta un certificado
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.
Prohibir protocolos
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
Contraseña del certificado TLS/SSL
Si los archivos de clave de certificado para mongod / mongos están cifrados, incluye net.ssl.PEMKeyPassword configurado con la frase de contraseña.
Ejecutar en moda FIPS
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.
Próximos pasos
Para configurar el soporte de TLS/SSL para clientes, consulta Configuración de TLS/SSL para Clientes.