El siguiente procedimiento establece la autenticación de certificados x.509 para la autenticación de clientes en un autónomo mongod instancia. Esto también se conoce como TLS Mutuo o mTLS.
Para usar x.509 autenticación para sets de réplicas o clústeres, consulta Usar el certificado x.509 para autenticación de membresía con MongoDB autogestionado.
Requisitos previos
Una descripción completa de TLS/SSL, certificados PKI (Infraestructura de llave pública), en particular certificados x.509, y Autoridad Certificadora está más allá del alcance de este documento. Este tutorial asume conocimiento previo de TLS/SSL, así como acceso a certificados x.509 válidos.
Autoridad 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.
Para utilizar la autenticación x.509, se debe especificar --tlsCAFile o net.tls.CAFile a menos que se utilice --tlsCertificateSelector o --net.tls.certificateSelector.
Certificado x.509 del cliente
Debe tener certificados x.509 válidos. Los certificados x.509 del cliente deben cumplir con los requisitos del certificado del cliente.
Si especificas --tlsAllowInvalidCertificates o net.tls.allowInvalidCertificates: true, un certificado no válido es suficiente solo para establecer una conexión TLS, pero es insuficiente para la autenticación.
Procedimiento
Implemente con autenticación x.509
Puedes configurar una instancia mongod para la autenticación x.509 desde la línea de comandos.
Para configurar una instancia autónomo de mongod, ejecute el siguiente comando:
mongod --tlsMode requireTLS \ --tlsCertificateKeyFile <path to TLS/SSL certificate and key PEM file> \ --tlsCAFile <path to root CA PEM file> --bind_ip <hostnames>
Incluye opciones adicionales según sea necesario para la configuración.
La configuración de x.509 requiere:
Opción | notas |
|---|---|
Especifique | |
Especifica el certificado x.509 de la instancia para presentarlo a los clientes. | |
Especifica el archivo de Autoridad de Certificación para verificar los certificados presentados a la instancia. |
Puedes configurar un mongod para la autenticación x.509 en el archivo de configuración.
Para configurar una instancia autónoma de mongod, agregue las siguientes opciones de configuración a su archivo de configuración:
net: tls: mode: requireTLS certificateKeyFile: <path to TLS/SSL certificate and key PEM file> CAFile: <path to root CA PEM file>
Incluye opciones adicionales según sea necesario para la configuración.
La configuración de x.509 requiere:
Opción | notas |
|---|---|
Especifique | |
Especifica el certificado x.509 de la instancia para presentarlo a los clientes. | |
Especifica el archivo de Autoridad de Certificación para verificar los certificados presentados a la instancia. |
Para configurar la autenticación x.509 para los sets de réplicas o los clústeres, consulta Utilizar el certificado x.509 para la autenticación de membresía con MongoDB autogestionado.
Agregar x.509 Certificado subject como usuario
Para autenticarse con un certificado de cliente, primero debe añadir el valor del subject del certificado de cliente como usuario de MongoDB a la base de datos $external. Cada certificado de cliente x.509 único corresponde a un único usuario de MongoDB. No se puede utilizar un solo certificado de cliente para autenticar a más de un usuario de MongoDB.
Nota
Requisitos del nombre de usuario
Para usar Sesiones de Cliente y Garantías de coherencia causal con usuarios de autenticación de
$external(usuarios Kerberos, LDAP o x.509), los nombres de usuario no pueden superar los 10 000 bytes.Los RDN de la cadena
subjectdeben ser compatibles con la RFC2253 estándar.
Puedes recuperar el
RFC2253formateadosubjectdesde el certificado de cliente con el siguiente comando:openssl x509 -in <pathToClientPEM> -inform PEM -subject -nameopt RFC2253 El comando devuelve la cadena
subjecty el certificado:subject= CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry -----BEGIN CERTIFICATE----- # ... -----END CERTIFICATE----- Añade el valor compatible con
RFC2253delsubjectcomo usuario. Omite los espacios según sea necesario.El siguiente ejemplo agrega un usuario y le otorga el rol de
readWriteen la base de datostesty el rol deuserAdminAnyDatabase:db.getSiblingDB("$external").runCommand( { createUser: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry", roles: [ { role: "readWrite", db: "test" }, { role: "userAdminAnyDatabase", db: "admin" } ], writeConcern: { w: "majority" , wtimeout: 5000 } } ) Consulta Gestionar usuarios y roles en implementaciones autogestionadas para obtener detalles sobre cómo añadir un usuario con roles.
Autentíquese con un Certificado x.509
Después de que se haya añadido el sujeto del certificado de cliente x.509 como un usuario correspondiente de MongoDB, puedes autenticarte con el certificado de cliente:
Para autenticarse durante la conexión, ejecute el siguiente comando:
mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \ --tlsCAFile <path to root CA PEM file> \ --authenticationDatabase '$external' \ --authenticationMechanism MONGODB-X509
Opción | notas |
|---|---|
Especifica el archivo x.509 del cliente. | |
Especifique el archivo de la Autoridad Certificadora para verificar el certificado presentado por la instancia | |
Especifique | |
Especifique |
Puedes conectarte sin autenticación y usar el método db.auth() para autenticarte después de la conexión.
Por ejemplo, si se usa mongosh,
mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \ --tlsCAFile <path to root CA PEM file> OpciónnotasEspecifica el archivo x.509 del cliente.
Para autenticarse, usa el método
db.auth()en la base de datos$external. En el campomechanism, especifica"MONGODB-X509".db.getSiblingDB("$external").auth( { mechanism: "MONGODB-X509" } )
Próximos pasos
Para usar x.509 autenticación para sets de réplicas o clústeres, consulta Usar el certificado x.509 para autenticación de membresía con MongoDB autogestionado.