Docs 菜单
Docs 主页
/ / /
C#/.NET
/ /

x.509

在此页面上

  • Overview
  • 代码占位符
  • 在应用程序中使用 X.509 身份验证
  • 故障排除
  • API 文档

X.509 身份验证机制中,服务器和客户端使用 TLS 协议交换 X.509 公钥证书。您可以使用此机制对MongoDB Atlas、 MongoDB Enterprise Advanced和MongoDB Community Edition进行身份验证。

提示

X.509 机制

要学习;了解如何将 TLS/SSL 与.NET/ C#驱动程序结合使用,请参阅 TLS/SSL。

有关 X.509 证书的更多信息,请参阅MongoDB Server手册中的 X. 。509

本页上的代码示例使用以下占位符:

  • +srv:仅当您连接到MongoDB Atlas 群集时,才在连接字符串前缀中包含此选项。要学习;了解有关+srv 选项的更多信息,请参阅MongoDB Server手册中的连接字符串格式。

  • <hostname>: MongoDB 部署的网络解决。

  • <port>: MongoDB 部署的端口号。如果省略此参数,驾驶员将使用默认端口号 ( 27017 )。连接MongoDB Atlas 群集时无需端口号。

  • <X.509 certificate username>:与 X.509 证书关联的用户名的用户名。用户名必须与证书的主题标识名匹配。如果省略此参数, MongoDB 部署将从 X.509 证书推断用户名。

  • <path to X.509 certificate>:X.509 证书文件的路径。

  • <X.509 certificate password>:X.509 证书的密码。

要使用本页上的代码示例,请将这些占位符替换为您自己的值。

要使用 X.509 证书进行身份验证,必须使用MongoClientSettings 对象来指定 X.509 证书的路径以及证书的密码。证书必须使用 PKCS #12 (.p12 ) 格式。

提示

将 .pem 转换为 .p12

如果您的证书使用 PEM ().pem 格式,则必须将其转换为.p12 格式。要转换证书,请使用openssl 命令行工具,如以下代码示例:

openssl pkcs12 -export -out <.p12 file> -inkey <private key file> -in <.pem file>

openssl-pkcs12有关 的更多信息,请参阅 OpenSSL 文档。

您还必须指定 MONGODB-X509 作为身份验证机制,并将 $external 指定为身份验证源。您可以在连接字符串中或使用 MongoCredential对象来指定这些选项。选择 Connection StringMongoCredential标签页,查看相应的语法:

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>"]),
};

如果您使用Windows作为操作系统,则可能会遇到.NET/ C#驱动程序无法在内存中找到 X.509身份验证证书的问题。此错误显示以下错误消息:

No credentials are available in the security package

要解决此问题,请将以下代码添加到您的应用程序中。此代码生成应用程序所需的任何 X.509 证书并将它们存储到磁盘:

using (X509Certificate2 certWithKey = certOnly.CopyWithPrivateKey(key))
{
return new X509Certificate2(certWithKey.Export(X509ContentType.Pkcs12));
}

要学习;了解有关此页面上使用的任何MongoDB方法和类型的更多信息,请参阅以下API文档:

有关此页面上使用的.NET类型的详细信息,请参阅以下 MSDN 文档:

后退

SCRAM