Este tutorial te muestra cómo conectar mongosh a un Conjuntode réplicas autogestionado con TLS habilitado.
Antes de comenzar
Antes de comenzar, verifique que tiene lo siguiente:
Un conjunto de réplicas que usted configuró para usar TLS siguiendo los pasos en Configurar TLS en implementaciones autogestionadas.
El control de acceso a MongoDB debe estar habilitado en su implementación y se debe haber creado al menos un usuario administrador. Para configurar el control de acceso, consulte Habilitar el control de acceso en implementaciones autogestionadas. Este usuario debe tener
clusterMonitorprivilegios.Si desea conectarse a su implementación mediante autenticación X.509, asegúrese de tener OpenSSL instalado para generar un certificado de cliente.
Acceso
mongosha.
Pasos
Si no desea utilizar la autenticación mutua TLS o X.,509 siga este procedimiento. Si establece allowConnectionsWithoutCertificates en true en la configuración de su servidor, los clientes podrán conectarse sin presentar un certificado y autenticarse con SCRAM.
Conéctese a su implementación con mongosh
Conecta mongosh a tu conjunto de réplicas usando las siguientes opciones:
mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \ --tls --tlsCAFile /etc/ssl/mongodb/ca.pem
--tlsHabilita el cifrado TLS para la conexión.--tlsCAFilese establece en el certificado CA que firmó los certificados del servidor para quemongoshpueda verificar los certificados del servidor.
Conectarse sin un certificado de cliente establece una sesión cifrada con TLS, pero no te autentica. Para ejecutar la mayoría de los comandos, debes autenticarte mediante un mecanismo como SCRAM.
Autenticar usuario
Utilice el método para autenticarse con su nombre de usuario y contraseña de db.auth() administrador.
Si desea utilizar la autenticación mutua de cliente TLS y X.509 al conectarse a su implementación, siga este procedimiento para crear y autenticarse con un certificado de cliente.
Generar un certificado de cliente
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 los certificados de su servidor son válidos para la autenticación de cliente.
Genere un certificado de cliente utilizando el proceso descrito en Obtener certificados de servidor TLS. Realice los siguientes ajustes:
En su archivo de configuración, establezca
extendedKeyUsage = clientAuthen lugar deserverAuth.La CA que firmó los certificados de autenticación de cliente de su nodo también debe firmar su certificado de cliente. Generalmente, esta 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.crtyclient.pemen lugar de los nombres específicos de los nodos utilizados en el tutorial de certificados.
Una vez finalizado el proceso, copie client.pem en una ubicación segura de la máquina donde ejecuta mongosh:
cp client.pem /etc/ssl/mongodb/client.pem
Identifique el sujeto de su cliente.
Identifique el sujeto 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 tema, ejecute el siguiente comando:
openssl x509 -in /etc/ssl/mongodb/client.pem -noout -subject
Tome nota del resultado, que se parece al siguiente:
subject=C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser
Guarda el nombre del tema para usarlo más adelante en este tutorial. En este ejemplo, el nombre del tema es C=US, ST=New-York, L=New York City, O=MongoDB,
CN=myUser.
Conéctese a su implementación con su certificado de cliente.
Conecta mongosh a tu conjunto de réplicas usando 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
--tlsHabilita el cifrado TLS para la conexión.--tlsCAFilese establece en el certificado CA que firmó los certificadosmongoshdel servidor para que pueda verificar la conexión del servidor.--tlsCertificateKeyFilepresenta el certificado de cliente y la clave privada que el servidor utiliza para autenticar su conexión con X.509.
Esto te conecta a tu implementación de MongoDB a través de TLS.
Autentícate como usuario administrador
Utilice el método para autenticarse con su nombre de usuario y contraseña de db.auth() administrador.
Crea un usuario en la $external base de datos
Cree un usuario en la $external base de datos que corresponda al nombre del sujeto de su certificado de cliente con el db.createUser() método. Reemplace el nombre de usuario con el sujeto de su certificado de cliente que identificó previamente:
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 para autenticarse en db.auth() la $external base de datos mediante509 X.:
db.getSiblingDB("$external").auth({ mechanism: "MONGODB-X509", user: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser" })
Resultado final
Después de completar este tutorial, mongosh se conecta a su conjunto de réplicas a través de una conexión TLS cifrada, autenticada con SCRAM o X.509.