Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Habilitar TLS em uma conexão

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

Importante

TLS 1.2

O driver .NET/C# é compatível apenas com TLS 1.2 ou superior.

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 string de conexão.

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 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 é mais 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 classe SslStream no framework .NET e no 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.

Observação

Depreciação do OCSP Let's Encrypt

Let's Encrypt has ended OCSP support for newer certificates. New certificates issued by Let's Encrypt might not include an OCSP responder URL. OCSP revocation checking occurs only when a certificate contains an OCSP URI, so a missing OCSP URL is expected and doesn't necessarily indicate a problem with your MongoDB deployment.

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