ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs Menu

x.509

X.509 認証メカニズムでは、サーバーとクライアントはTLSプロトコルを使用して X.509 公開鍵証明書を交換します。このメカニズムを使用して、 MongoDB Atlas、 MongoDB Enterprise Advanced、 MongoDB Community Edition を認証できます。

Tip

X.509 メカニズム

.NET/ C#ドライバーで TLS/SSL を使用する方法については、「 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 )形式 を使用する必要があります。

Tip

.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 String タブまたは MongoCredentialタブを選択します。

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 ドキュメントを参照してください。