Menu Docs
Página inicial do Docs
/ / /
C#/.NET
/ /

Habilitar TLS em uma conexão

Nesta página

  • Visão geral
  • Habilitar TLS
  • Configurar um Certificado de Cliente
  • Permitir TLS Inseguro
  • Verifique a revogação do certificado
  • Verificação de revogação pelo sistema operacional
  • Documentação da API

Neste guia, você pode aprender como se conectar às instâncias MongoDB com o TLS/SSL protocolo de segurança usando o suporte TLS/SSL subjacente no framework .NET. Para configurar sua conexão para usar TLS/SSL, habilite as configurações de TLS/SSL na connection string ou MongoClientSettings.

Por padrão, o TLS está desabilitado ao conectar a instâncias MongoDB. Você pode habilitar o TLS para a conexão com sua instância do MongoDB de duas maneiras diferentes: usando uma propriedade em um objeto MongoClientSettings ou por meio de um parâmetro em sua connection string.

Observação

Se você se conectar com o protocolo de seedlist DNS, o driver ativará TLS/SSL por padrão. Para desativá-lo, defina o valor do parâmetro tls ou ssl como false em sua string de conexão ou instância MongoClientSettings.

Para saber mais sobre o comportamento da conexão ao usar uma lista de sementes de DNS, consulte a seção Formato de conexão SRV no manual do servidor.

Para habilitar o TLS com um objeto MongoClientSettings, defina a propriedade UseTls como true:

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

Para habilitar o TLS com uma connection string, atribua ao parâmetro tls um valor de true na connection string passada para o construtor MongoClient :

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

Você pode configurar seu certificado X.509 utilizando MongoClientSettings. A seguinte amostra de código cria um novo objeto de certificado X.509 utilizando o arquivo de certificado denominado client.p12, que é protegido pela senha mySuperSecretPassword. O código então adiciona esse certificado à matriz SslSettings.ClientCertificates em MongoClientSettings.

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

Importante

Ao carregar um certificado com uma senha, o objeto de certificado deve conter uma chave privada. Caso contrário, seu certificado não será passado para o servidor.

Quando o TLS está habilitado, o driver .NET/C# verifica automaticamente o certificado apresentado pelo servidor. Ao testar seu código, você pode desabilitar a verificação do certificado. Isso é conhecido como TLS inseguro.

Ao usar TLS inseguro, o único requisito é que o servidor apresente um certificado X.509. O driver aceitará um certificado mesmo que alguma das seguintes afirmações seja verdadeira:

  • O nome do host do servidor e o nome do assunto (ou nome alternativo do assunto) no certificado não correspondem.

  • O certificado expirou ou ainda não é válido.

  • O certificado não tem um certificado raiz confiável na cadeia.

  • A finalidade do certificado não é válida para identificação do servidor.

Você pode permitir o TLS inseguro de duas maneiras diferentes: usando uma propriedade em um objeto MongoClientSettings ou por meio de um parâmetro em sua cadeia de conexão.

Para permitir TLS inseguro com um objeto MongoClientSettings, defina a propriedade AllowInsecureTls como true:

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

Para permitir TLS inseguro utilizando uma string de conexão, atribua ao parâmetro de string de conexão tlsInsecure um valor de true:

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

Aviso

Sempre defina esta opção como false em produção. Por motivos de segurança, é importante que o certificado do servidor seja validado corretamente.

Quando um certificado X.509 não deve mais ser confiável - por exemplo, se sua chave privada tiver sido comprometida - a autoridade de certificação revogará o certificado.

Por padrão, o driver .NET/C# não verifica se o certificado de um servidor foi revogado antes de se conectar. Você pode habilitar a verificação de revogação utilizando o MongoClientSettings ou a connection string.

Para habilitar a verificação de revogação utilizando MongoClientSettings, configure SslSettings.CheckCertificateRevocation para true:

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

Para ativar a verificação de revogação utilizando uma string de conexão, atribua ao parâmetro de string de conexão tlsDisableCertificateRevocationCheck um valor de false:

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

Observação

O driver .NET/C# não verifica a revogação por padrão, pois este é o comportamento padrão da SslStream classe tanto na estrutura .NET e o padrão .NET.

O Driver .NET/C# é compatível com os seguintes mecanismos de verificação de revogação de forma diferente no Windows, macOS e Linux:

No Windows, o driver .NET/C# oferece suporte a OCSP, grampeamento OCSP e CRLs sem OCSP, tanto no .NET Framework quanto no .NET Core.

Aviso

No Windows, o driver .NET/C# relatará uma "falha rígida" e cancelará o handshake TLS se o respondente OCSP não estiver disponível. Outros sistemas operacionais e drivers relatarão uma "falha suave" e continuarão se conectando.

No macOS, o Driver .NET/C# suporta OCSP e grampeamento OCSP.

Começando com o .NET Core 2,0, o driver não suporta CRLs sem OCSP.

No Linux, o Driver .NET/C# suporta OCSP, grampeamento OCSP e CRLs sem OCSP.

Para saber mais sobre qualquer uma das opções de conexão discutidas nesta guia, consulte a seguinte documentação da API:

Voltar

Opções de conexão