X.509
Nesta página
Visão geral
No mecanismo de autenticação X., o servidor e o cliente usam o509 protocoloTLS para trocar 509 certificados de chave pública X.. Você pode usar esse mecanismo para autenticar no MongoDB Atlas, Enterprise Advanced e MongoDB Community Edition.
Dica
X.509 Mecanismo
Para saber como usar o TLS/SSL com o driver .NET/C#, consulte TLS/SSL.
Para obter mais informações sobre509 certificados X., consulte X. no manual do MongoDB Server .509
Espaços reservados de código
Os exemplos de código nesta página usam os seguintes espaços reservados:
+srv
: inclua essa opção no prefixo da string de conexão somente se estiver se conectando a um cluster MongoDB Atlas . Para saber mais sobre a+srv
opção, consulte Formatos de connection string no manual do MongoDB Server .<hostname>
: O endereço de rede da sua implantação MongoDB .<port>
: o número da porta da implantação do MongoDB . Se você omitir este parâmetro, o driver utilizará o número de porta padrão (27017
). Você não precisa de um número de porta ao se conectar a um cluster MongoDB Atlas .<X.509 certificate username>
: o nome de usuário do usuário associado ao certificado X.509. O nome de usuário deve corresponder ao nome do assunto distinto do certificado. Se você omitir este parâmetro, a implantação MongoDB infere o nome de usuário a partir do certificado X.509.<path to X.509 certificate>
: o caminho para o arquivo de certificado X.509.<X.509 certificate password>
: a senha do certificado X.509.
Para usar os exemplos de código nesta página, substitua esses espaços reservados por seus próprios valores.
Usando a autenticação X.509 em seu aplicativo
Para usar um509 certificado X. para autenticação, você deve usar um MongoClientSettings
objeto para especificar o caminho para509 o certificado X. e a senha do certificado. O certificado deve usar 12o.p12
formato PKCS # ( ).
Dica
Converter .pem para .p12
Se o seu certificado usa o formato PEM (.pem
), você deve convertê-lo no .p12
formato. Para converter o certificado, use a openssl
ferramenta de linha de comando, como mostrado no exemplo de código a seguir:
openssl pkcs12 -export -out <.p12 file> -inkey <private key file> -in <.pem file>
Para obter mais informações sobre,openssl-pkcs12
consulte a documentação do OpenSSL.
Você também deve especificar MONGODB-X509
como o mecanismo de autenticação e $external
como a fonte de autenticação. Você pode especificar estas opções em sua string de conexão ou usando um objeto MongoCredential
. Selecione a aba Connection String ou MongoCredential para ver a sintaxe correspondente:
var connectionString = "mongodb[+srv]://<hostname>[:<port>]/?authSource=$external&authMechanism=MONGODB-X509"; var settings = MongoClientSettings.FromConnectionString(connectionString); settings.UseTls = true; settings.SslSettings = new SslSettings { ClientCertificates = new List<X509Certificate>() { new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>") } };
var credential = MongoCredential.CreateMongoX509Credential("<X.509 certificate username>"); var settings = new MongoClientSettings { Credential = credential, SslSettings = new SslSettings { ClientCertificates = new List<X509Certificate>() { new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>") }, }, UseTls = true, Server = new MongoServerAddress("<hostname>"[, "<port>"]), };
Solução de problemas
Se você estiver usando o Windows como sistema operacional, poderá encontrar um problema no qual o driver .NET/C# não consegue localizar um certificado de autenticação X.509
na memória. Este erro exibe a seguinte mensagem de erro:
No credentials are available in the security package
Para resolver esse problema, adicione o seguinte código ao seu aplicação. Este código gera quaisquer certificados X.509
exigidos pelo seu aplicação e os armazena no disco:
using (X509Certificate2 certWithKey = certOnly.CopyWithPrivateKey(key)) { return new X509Certificate2(certWithKey.Export(X509ContentType.Pkcs12)); }
Documentação da API
Para saber mais sobre qualquer um dos métodos e tipos MongoDB usados nesta página, consulte a seguinte documentação da API:
Para obter mais informações sobre os tipos .NET usados nesta página, consulte a seguinte documentação MSDN: