Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Conectarse a un set de réplicas habilitado para TLS

Este tutorial le muestra cómo conectar mongosh a un set de réplicas autogestionado habilitado para TLS.

Antes de empezar, verifique que tiene lo siguiente:

Si no desea utilizar TLS mutuo o X.509 autenticación de cliente, siga este procedimiento. Si establece allowConnectionsWithoutCertificates en true en la configuración de su servidor, los clientes pueden conectarse sin presentar un certificado y autenticarse con SCRAM en su lugar.

1

Conecte mongosh a su set de réplicas utilizando las siguientes opciones:

mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \
--tls --tlsCAFile /etc/ssl/mongodb/ca.pem
  • --tls habilita el cifrado TLS para la conexión.

  • --tlsCAFile se establece en el certificado de CA que firmó los certificados del servidor para que mongosh pueda verificar los certificados del servidor.

La conexión sin un certificado de cliente establece una sesión cifrada con TLS, pero no lo autentica. Para ejecutar la mayoría de los comandos, debe autenticarse con un mecanismo como SCRAM.

2

Utilice el método db.auth() para autenticarse con su nombre de usuario y contraseña de administrador.

3

Ejecute lo siguiente para confirmar el estado de autenticación:

db.adminCommand({ connectionStatus: 1 })

Confirme que authInfo.authenticatedUsers incluye al usuario esperado.

Si desea utilizar TLS mutuo y autenticación de cliente X.509 al conectarse a su implementación, siga este procedimiento para crear y autenticarse con un certificado de cliente.

1

Advertencia

No utilice el mismo certificado que los nodos de su servidor. Debe generar un nuevo certificado de cliente para la509 autenticación X., incluso si sus certificados de servidor son válidos para la autenticación de cliente.

Genere un certificado de cliente mediante el proceso descrito en Obtener certificados de servidor TLS. Realice los siguientes ajustes:

  • En su archivo de configuración, establezca extendedKeyUsage = clientAuth en lugar de serverAuth.

  • La CA que firmó los certificados de autenticación de cliente de su nodo también debe firmar su certificado de cliente. Generalmente, esto es ca.pem. Sin embargo, si obtuvo certificados separados para la autenticación de cliente, es posible que tenga una CA diferente para los certificados de cliente.

  • Asigne a sus archivos de salida los nombres client.key, client.crt y client.pem en lugar de los nombres específicos de los nodos utilizados en el tutorial de certificados.

Una vez completado el proceso, copie client.pem en una ubicación segura en la máquina donde ejecuta mongosh:

cp client.pem /etc/ssl/mongodb/client.pem
2

Identifique el asunto de su certificado de cliente. Necesita este valor para confirmar que se autenticó con el certificado de cliente esperado después de conectarse.

Para ver el asunto, ejecute el siguiente comando:

openssl x509 -in /etc/ssl/mongodb/client.pem -noout -subject

Toma nota del resultado, que se parece a lo siguiente:

subject=C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser

Guarda el nombre del sujeto para usarlo más adelante en este tutorial. En este ejemplo, el nombre del sujeto es C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser.

3

Conecte mongosh a su set de réplicas utilizando las siguientes opciones:

mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \
--tls \
--tlsCAFile /etc/ssl/mongodb/ca.pem \
--tlsCertificateKeyFile /etc/ssl/mongodb/client.pem
  • --tls habilita el cifrado TLS para la conexión.

  • --tlsCAFile se establece en el certificado de CA que firmó los certificados del servidor para que mongosh pueda verificar la conexión del servidor.

  • --tlsCertificateKeyFile presenta el certificado de cliente y la llave privada que el servidor utiliza para autenticar su conexión con X.509.

Esto lo conecta a su implementación de MongoDB a través de TLS.

4

Utilice el método db.auth() para autenticarse con su nombre de usuario y contraseña de administrador.

5

Cree un usuario en la base de datos $external que corresponda al nombre del sujeto de su certificado de cliente con el método db.createUser(). Reemplace el nombre de usuario con el sujeto de su certificado de cliente que identificó anteriormente:

db.getSiblingDB("$external").runCommand({
createUser: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser",
roles: [
{ role: "readWriteAnyDatabase", db: "admin" }
]
})

Después de crear un usuario, utilice el método db.auth() para autenticarse en la base de datos $external mediante X.509:

db.getSiblingDB("$external").auth({
mechanism: "MONGODB-X509",
user: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser"
})
6

Ejecute lo siguiente para confirmar el estado de autenticación:

db.adminCommand({ connectionStatus: 1 })

Confirme que authInfo.authenticatedUsers incluye al usuario esperado.

Después de completar este tutorial, mongosh se conecta a su set de réplicas a través de una conexión TLS cifrada, autenticada con SCRAM o X.509.