Los clientes deben tener soporte para TLS/SSL para conectarse a un
mongodo una instancia que mongos requieren conexiones TLS/SSL.
Nota
Las compilaciones heredadas de MongoDB para Linux de 64 bits (x64) no incluyen compatibilidad con TLS/SSL.
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.
MongoDB Shell
mongosh proporciona varias configuraciones de TLS/SSL, incluyendo:
Opción de TLS | notas |
|---|---|
Permite la conexión TLS/SSL. | |
Especifica el archivo
| |
Si el archivo de clave de certificado de | |
Si funciona en Windows o macOS, usa un certificado del almacén de certificados del sistema. Esta opción se excluye mutuamente con
|
Para ver una lista completa de las opciones de mongosh de tls, consulta las opciones TLS.
Para conexiones TLS/SSL, mongosh valida el certificado presentado por la mongod o la instancia mongos:
mongoshverifica que el certificado proviene de la Autoridad Certificadora especificada (--tlsCAFile. Si el certificado no proviene de la CA especificada,mongoshfallará al conectarse.mongoshverifica que el nombre de host (especificado en la opción--hosto la cadena de conexión) coincida con elSAN(o, siSANno está presente, elCN) en el certificado presentado pormongodomongos. SiSANestá presente,mongoshno coincide con elCN. Si el nombre de host no coincide con elSAN(o elCN),mongoshno se puede conectar.A partir de MongoDB 4.2, al realizar una comparación de SAN, MongoDB admite la comparación de nombres DNS o direcciones IP. En versiones anteriores, MongoDB solo admitía comparaciones de nombres DNS.
Para conectar
mongosha unmongodomongosque requiere TLS/SSL, se debe especificar la opción--hosto usar una cadena de conexión para especificar el nombre de host. Todas las demás opciones delTLS/SSLdeben especificarse mediante las opciones de la línea de comandos.
Se debe hacer la conexión a las instancias de MongoDB mediante cifrado
Para conectarse a una instanciamongod o mongos que requiera comunicación cifrada, se debe comenzar mongosh con:
--hosty--tlsCAFilepara validar el certificado del servidor.
Por ejemplo, se puede considerar una instancia de mongod que se ejecuta en hostname.example.com con las siguientes opciones:
mongod --tlsMode requireTLS --tlsCertificateKeyFile <pem>
Para conectarse a la instancia, se debe comenzar mongosh con las siguientes opciones:
mongosh --tls --host hostname.example.com --tlsCAFile /etc/ssl/caToValidateServerCertificates.pem
mongosh verifica el certificado presentado por la instancia mongod contra el nombre de host especificado y el archivo CA.
Conéctate a instancias de MongoDB que requieren certificados de cliente
Para conectarse a un mongod o mongos que requiera certificados de cliente firmados por CA, se debe comenzar mongosh con:
--hosty--tlsCAFilepara validar el certificado del servidor,--tlsCertificateKeyFileOpción para especificar el certificado del cliente a presentar al servidor.
Por ejemplo, se puede considerar una instancia de mongod que se ejecuta en hostname.example.com con las siguientes opciones:
mongod --tlsMode requireTLS --tlsCertificateKeyFile /etc/ssl/mongodb.pem --tlsCAFile /etc/ssl/caToValidateClientCertificates.pem
Para conectarse a la instancia, se debe comenzar mongosh con las siguientes opciones:
mongosh --tls --host hostname.example.com --tlsCertificateKeyFile /etc/ssl/client.pem --tlsCAFile /etc/ssl/caToValidateServerCertificates.pem
Windows y macOS
Para especificar un certificado de cliente del almacenes de certificados del sistema, se debe utilizar la opción --tlsCertificateSelector en lugar de --tlsCertificateKeyFile.
Si el archivo CA también está en los almacenes de certificados del sistema, se puede omitir la opción --tlsCAFile.
Por ejemplo, si un certificado con el CN (Common Name) de myclient.example.net y el archivo de CA que lo acompaña están en el almacén de certificados del sistema macOS, la conexión se puede hacer así:
mongosh --tls --host hostname.example.com --tlsCertificateSelector subject="myclient.example.net"
Hay disponibles en mongosh, pero se deben usar las alternativas de tls en su lugar.
Evitar usar la opción --tlsAllowInvalidCertificates
Advertencia
Aunque esté disponible, evita usar la opción--tlsAllowInvalidCertificates si es posible. Si es necesario el uso de --tlsAllowInvalidCertificates, utiliza la opción solo en sistemas donde no sea posible la intrusión.
Si mongosh ejecuta con la opción--tlsAllowInvalidCertificates, mongosh no intentará validar los certificados del servidor. Esto crea una vulnerabilidad a los certificados mongod y mongos vencidos, así como a procesos foráneos que se hagan pasar por instancias válidas de mongod o mongos. Si solo se necesita desactivar la validación del nombre del host en los certificados TLS/SSL, se puede consultar --tlsAllowInvalidHostnames.
MongoDB Atlas, MongoDB Cloud Manager y MongoDB Ops Manager
MongoDB Atlas usa TLS/SSL para cifrar las conexiones a las bases de datos.
Los agentes de supervisión de MongoDB Cloud Manager y Ops Manager utilizan comunicación cifrada para recopilar sus estadísticas. Como los agentes ya cifran las comunicaciones con los servidores de MongoDB Cloud Manager/Ops Manager, solo es cuestión de habilitar el soporte con TLS/SSL en MongoDB Cloud Manager/Ops Manager para cada host.
Para obtener más información, consulte:
Controladores de MongoDB
Los drivers de MongoDB soportan comunicación cifrada. Para obtener más detalles, se puede consultar:
Herramientas de MongoDB
Varios programas utilitarios de MongoDB soportan la comunicación cifrada. Estas herramientas incluyen:
Para usar la comunicación cifrada con estas herramientas, se deben usar las mismas opciones tls que mongosh. Ver MongoDB Shell.