Overview
En esta guía, podrá aprender cómo utilizar el protocolo TLS para proteger su conexión a una implementación de MongoDB. TLS es un protocolo criptográfico que asegura la comunicación entre tu aplicación y MongoDB. Para configurar tu conexión para utilizar TLS, habilita la opción de TLS y proporciona tus certificados para la validación al crear un cliente.
Esta guía incluye las siguientes secciones:
Habilitar TLS describe formas de habilitar TLS en tu conexión
Configurar Certificados describe los certificados necesarios para configurar TLS
Los certificados de referencia en un cliente proporcionan un ejemplo de cómo crear un
TlsOptionsestructura para configurar tus opciones TLSInformación adicional proporciona enlaces a recursos y documentación de la API para los tipos y métodos mencionados en esta guía
Tip
Para obtener más información sobre TLS, consulta la entrada en Wikipedia sobre Transport Layer Security.
Habilitar TLS
Puedes habilitar TLS en una conexión a tu instancia de MongoDB de una de las siguientes maneras:
Establecer la opción
tlsentrueen tu cadena de conexiónEstablecer el campo
tlsde una instanciaClientOptionsen la varianteTls::Enabledcon una estructuraTlsOptionsvacía e instanciar unClientcon esas opciones
Seleccione de lo siguiente Connection String y ClientOptions pestañas para ver una muestra de código correspondiente:
Nota
Si su cadena de conexión utiliza un registro DNS SRV al incluir el prefijo mongodb+srv, TLS está habilitado en su conexión de forma predeterminada.
Para obtener una lista completa de opciones de cliente, consulta la Guía deopciones de conexión.
Configurar certificados
Para iniciar correctamente una solicitud TLS, tu aplicación debe presentar certificados criptográficos para demostrar su identidad. Los certificados de tu aplicación deben almacenarse como archivos de Mail Mejorado de Privacidad (PEM) para habilitar TLS al conectar a una implementación de MongoDB. El formato de archivo PEM es un formato contenedor para certificados criptográficos.
Importante
Para uso en producción, recomendamos que su implementación de MongoDB utilice certificados válidos generados y firmados por la misma autoridad de certificación. Para pruebas, su implementación puede usar certificados autofirmados.
La siguiente lista describe los componentes que tu cliente debe presentar para establecer una conexión habilitada para TLS:
Componente TLS | Descripción |
|---|---|
Autoridad de certificación (CA) | Una o más autoridades de certificación en las que confiar al realizar una conexión TLS |
Certificado de cliente | Un certificado digital que le permite al servidor verificar la identidad de su aplicación para establecer una conexión de red cifrada |
Clave del certificado | El archivo de llave privada del certificado del cliente, que a menudo se incluye dentro del propio archivo de certificado. |
Frase de contraseña | La contraseña para descifrar la clave privada del cliente si está cifrada |
Certificados de referencia en un cliente
Debe hacer referencia a sus certificados en su estructura TlsOptions para que el servidor pueda validarlos antes de que el cliente se conecte.
Primero debe convertir las rutas de archivo de su certificado al tipo PathBuf, por lo que debe importar este tipo desde el módulo std::path. A continuación, llame a las funciones de construcción de la estructura TlsOptions para asignar las rutas de archivo del certificado a los campos ca_file_path y cert_key_file_path.
En su TlsOptions instancia, puede configurar campos opcionales para TLS en su conexión. Para realizar pruebas, puede configurar los allow_invalid_certificates allow_invalid_hostnames campos y.
Al establecer la opción allow_invalid_certificates en true, se deshabilita la verificación del nombre de host, y al establecer el allow_invalid_hostnames en true, se desactiva la validación del certificado.
Advertencia
Especificar cualquiera de estas opciones en un entorno de producción hace que tu aplicación sea insegura y potencialmente vulnerable a certificados caducados y a procesos externos que se hacen pasar por instancias válidas de clientes.
Ejemplo
Este ejemplo realiza las siguientes acciones para crear una instancia TlsOptions y una instancia Client que está configurada para TLS:
Crea variables para hacer referencia a las rutas de archivos del certificado en
PathBufinstancias.Crea una variable para almacenar la contraseña utilizada para descifrar la clave del cliente.
Crea una instancia de una estructura
TlsOptionsy establece los camposca_file_path,cert_key_file_pathytls_certificate_key_file_passwordpara configurar la conexión habilitada para TLS.Pasa la instancia
TlsOptionsa la varianteEnabledde la enumeraciónTls.Configura el campo
tlsde la estructuraClientOptionsa la varianteTls::Enabledque contiene la instanciaTlsOptions.Crea una instancia
Clientcon estas opciones.
use std::path::PathBuf; use mongodb::{ options::{ ClientOptions, TlsOptions, Tls }, Client }; async fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let mut client_options = ClientOptions::parse(uri).await?; let ca_file = PathBuf::from(r"<path to CA certificate>"); let key_file = PathBuf::from(r"<path to client certificate>"); let key_password = b"<password for client key>".to_vec(); let tls_opts = TlsOptions::builder() .ca_file_path(ca_file) .cert_key_file_path(key_file) .tls_certificate_key_file_password(key_password) .build(); client_options.tls = Some(Tls::Enabled(tls_opts)); let _client = Client::with_options(client_options)?; Ok(()) }
Información Adicional
Para obtener más información sobre cómo habilitar TLS en una conexión, consulta la siguiente documentación del manual del servidor:
Documentación de la API
Para obtener más información sobre cualquiera de los métodos o tipos mencionados en esta guía, consulta la siguiente documentación API: