Docs Menu
Docs Home
/ / /
C#/.NET
/ /

x.509

項目一覧

  • Overview
  • コード プレースホルダー
  • アプリケーションでの X.509 認証の使用
  • トラブルシューティング
  • API ドキュメント

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. 証明書と証明書のパスワードを指定する必要があります。証明書は PKCS509 #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 ドキュメントを参照してください。

戻る

SCRAM