Docs Menu
Docs Home
/ /

Habilitar y configurar TLS

En esta guía, aprenderá a usar el protocolo TLS para proteger su conexión a una implementación de MongoDB. TLS es un protocolo criptográfico que protege la comunicación entre su aplicación y MongoDB. Para configurar su conexión con TLS, habilite la opción TLS y proporcione sus certificados para su validación al crear un cliente.

Esta guía incluye las siguientes secciones:

  • Habilitar TLS describe formas de habilitar TLS en su 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 TlsOptions Estructura para configurar sus opciones TLS

  • Información adicional proporciona enlaces a recursos y documentación de API para los tipos y métodos mencionados en esta guía.

Tip

Puedes habilitar TLS en una conexión a tu instancia de MongoDB de una de las siguientes maneras:

  • Establecer la opción tls en true en su cadena de conexión

  • Establecer el campo tls de una instancia ClientOptions en la variante Tls::Enabled con una estructura TlsOptions vacía e instanciar un Client con esas opciones

Seleccione entre las siguientes opciones Connection String y ClientOptions pestañas para ver un ejemplo de código correspondiente:

let uri = "mongodb://<hostname>:<port>?tls=true"
let client = Client::with_uri_str(uri).await?;
let uri = "<connection string>"
let mut client_options = ClientOptions::parse(uri).await?;
let tls_opts = TlsOptions::builder().build();
client_options.tls = Some(Tls::Enabled(tls_opts));
let client = Client::with_options(client_options)?;

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 las opciones del cliente, consulte la Guía deopciones de conexión.

Para iniciar correctamente una solicitud TLS, su aplicación debe presentar certificados criptográficos que acrediten su identidad. Los certificados de su aplicación deben almacenarse como archivos de correo con privacidad mejorada (PEM) para habilitar TLS al conectarse 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 su 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 permite al servidor verificar la identidad de su aplicación para establecer una conexión de red cifrada

Clave de certificado

El archivo de clave privada del certificado del cliente, a menudo incluido dentro del propio archivo del certificado

Frase de contraseña

La contraseña para descifrar la clave privada del cliente si está cifrada

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.

Establecer la opción allow_invalid_certificates en true deshabilita la verificación del nombre de host, y establecer la opción allow_invalid_hostnames en true deshabilita la validación del certificado.

Advertencia

Especificar cualquiera de estas opciones en un entorno de producción hace que su aplicación sea insegura y potencialmente vulnerable a certificados vencidos y a procesos externos que se hacen pasar por instancias de cliente válidas.

Este ejemplo realiza las siguientes acciones para crear una instancia TlsOptions y una instancia Client configurada para TLS:

  1. Crea variables para hacer referencia a las rutas de archivos del certificado en PathBuf instancias.

  2. Crea una variable para almacenar la contraseña utilizada para descifrar la clave del cliente.

  3. Crea una instancia de una estructura TlsOptions y establece los campos ca_file_path, cert_key_file_path y tls_certificate_key_file_password para configurar la conexión habilitada para TLS.

  4. Pasa la instancia TlsOptions a la variante Enabled de la enumeración Tls.

  5. Establece el campo tls de la estructura ClientOptions en la variante Tls::Enabled que contiene la instancia TlsOptions.

  6. Crea una instancia Client con estas opciones.

use std::path::PathBuf;
use mongodb::{ options::{ ClientOptions, TlsOptions, Tls }, Client };
#[tokio::main]
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(())
}

Para obtener más información sobre cómo habilitar TLS en una conexión, consulte la siguiente documentación del manual del servidor:

Para obtener más información sobre cualquiera de los métodos o tipos mencionados en esta guía, consulte la siguiente documentación de API:

Volver

Compresión de la red

En esta página