Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Habilitar TLS en una Conexión

En esta guía, puedes aprender cómo conectarte a instancias de MongoDB con el TLS/SSL protocolo de seguridad utilizando la compatibilidad subyacente de TLS/SSL en el framework .NET. Para configurar su conexión para usar TLS/SSL, active la configuración de TLS/SSL en: cadena de conexión o MongoClientSettings.

Importante

TLS 1.2

El controlador .NET/C# sólo admite TLS 1.2 o superior.

Por defecto, TLS está desactivado al conectarse a instancias de MongoDB. Puedes habilitar TLS para la conexión a tu instancia de MongoDB de dos maneras diferentes: usando una propiedad en un MongoClientSettings objeto o a través de un parámetro en tu cadena de conexión.

Nota

Si se conecta mediante el protocolo de lista de semillas DNS, el controlador habilita TLS/SSL de forma predeterminada. Para deshabilitarlo, configure el valor del parámetro tls o ssl en false en su cadena de conexión o instancia MongoClientSettings.

Para obtener más información sobre el comportamiento de conexión cuando se utiliza una lista de nodos iniciales DNS, consulte la sección SRV Connection Format en el manual del Servidor.

Para habilitar TLS con un objeto MongoClientSettings, establece la propiedad UseTls en true:

var settings = new MongoClientSettings { UseTls = true };
var client = new MongoClient(settings);

Para habilitar TLS con una cadena de conexión, asigne al parámetro tls un valor de true en la cadena de conexión pasada al constructor MongoClient:

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>?tls=true");

Puedes configurar tu certificado X.509 utilizando MongoClientSettings. El siguiente código de muestra crea un nuevo objeto de certificado X.509 usando el archivo de certificado llamado client.p12, que está protegido por la contraseña mySuperSecretPassword. El código luego agrega este certificado al arreglo SslSettings.ClientCertificates en MongoClientSettings.

var cert = new X509Certificate2("client.p12", "mySuperSecretPassword");
var settings = new MongoClientSettings
{
SslSettings = new SslSettings
{
ClientCertificates = new[] { cert }
},
UseTls = true
};

Importante

Al cargar un certificado con una contraseña, el objeto del certificado debe contener una clave privada. Si no lo hace, su certificado no será enviado al servidor.

Cuando TLS está habilitado, el controlador .NET/C# verifica automáticamente el certificado que presenta el servidor. Al probar el código, puede deshabilitar la verificación del certificado. Esto se conoce como TLS inseguro.

Al usar TLS inseguros, el único requisito es que el servidor presente un certificado X.509. El controlador aceptará un certificado, incluso si se cumple alguna de las siguientes condiciones:

  • El nombre de host del servidor y el nombre del sujeto (o nombre alternativo del sujeto) en el certificado no coinciden.

  • El certificado está caducado o todavía no es válido.

  • El certificado no tiene un certificado raíz confiable en la cadena.

  • El propósito del certificado no es válido para la identificación del servidor.

Puede permitir TLS no seguro de dos maneras diferentes: usando una propiedad en un objeto de MongoClientSettings o mediante un parámetro en su cadena de conexión.

Para permitir TLS no seguro con un objeto MongoClientSettings, configura la propiedad AllowInsecureTls a true:

var settings = new MongoClientSettings
{
UseTls = true,
AllowInsecureTls = true
};
var client = new MongoClient(settings);

Para permitir TLS inseguro mediante una cadena de conexión, asigne al parámetro de cadena de conexión tlsInsecure un valor de true:

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>?tls=true&tlsInsecure=true");

Advertencia

Siempre configure esta opción en false en producción. Por razones de seguridad, es importante que el certificado del servidor esté validado correctamente.

Cuando un certificado X.509 deja de ser confiable--por ejemplo, si su llave privada ha sido comprometida--la autoridad de certificación revocará el certificado.

Por defecto, el controlador .NET/C# no verifica si el certificado de un servidor ha sido revocado antes de conectarse. Puedes habilitar la verificación de revocación usando MongoClientSettings o la cadena de conexión.

Para habilitar la comprobación de revocación usando MongoClientSettings, configure SslSettings.CheckCertificateRevocation en true:

var settings = new MongoClientSettings
{
SslSettings = new SslSettings
{
CheckCertificateRevocation = true
},
UseTls = true
};

Para habilitar la verificación de revocación mediante una cadena de conexión, asigna el valor false al parámetro de cadena de conexión tlsDisableCertificateRevocationCheck:

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>?tls=true&tlsDisableCertificateRevocationCheck=false");

Nota

El driver .NET/C# no realiza la verificación de revocación por defecto porque este es el comportamiento predeterminado de la clase SslStream tanto en el marco .NET y en el estándar .NET.

El controlador .NET/C# admite los siguientes mecanismos de comprobación de revocación de manera diferente en Windows, macOS y Linux:

En Windows, el driver .NET/C# admite OCSP, OCSP incorporar y listas de revocación de certificados (CRL, por sus siglas en inglés) sin OCSP, tanto en .NET Framework como en .NET Core.

Advertencia

En Windows, el driver de .NET/C# notifica un "fallo grave" y cancela el handshake TLS si el respondedor de OCSP no está disponible. Otros sistemas operativos y drivers reportan una "falla leve" y continúan conectándose.

En macOS, el controlador .NET/C# admite OCSP y grapado de OCSP.

A partir de .NET Core 2.0, el controlador no admite CRL sin OCSP.

En Linux, el driver .NET/C# admite OCSP, OCSP stapling y CRL sin OCSP.

Para obtener más información sobre cualquiera de las opciones de conexión analizadas en esta guía, consulte la siguiente documentación de la API:

Volver

Encriptación en uso

En esta página