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

接続での TLS の有効化

項目一覧

  • Overview
  • TLS の有効化
  • クライアント証明書の構成
  • AllowInsecureTls
  • 証明書の失効を確認する
  • オペレーティング システムによる失効チェック
  • API ドキュメント

このガイドでは、 .NETフレームワークの基礎となる TLS/SSL サポートを使用して、 TLS/SSL セキュリティプロトコルを使用してMongoDBインスタンスに接続する方法を説明します。TLS/SSL を使用するように接続を構成するには、 string接続文字列または MongoClientSettings のいずれかで TLS/SSL 設定を有効にします。

デフォルトでは、MongoDB インスタンスに接続するときに TLS は無効になっています。 インスタンスへの接続に TLSMongoDB MongoClientSettingsstringを有効にするには、{0 オブジェクトの プロパティを使用する方法と、 接続 のパラメーターを使用する方法の 2 通りがあります。

注意

DNS シードリスト プロトコルを使用して接続する場合、ドライバーはデフォルトで TLS/SSL を有効にします。 これを無効にするには、接続stringまたは MongoClientSettings インスタンスで tls または ssl パラメータの値を false に設定します。

DNS シードリストを使用する場合の接続動作の詳細については、サーバー マニュアルの「 SRV 接続形式」セクションを参照してください。

MongoClientSettingsオブジェクトで TLS を有効にするには、 UseTlsプロパティをtrueに設定します。

var settings = new MongoClientSettings { UseTls = true };
var client = new MongoClient(settings);

接続文字列 を使用して TLS を有効にするには、MongoClient コンストラクターに渡される接続string string 、パラメーター tlstrue の値を割り当てます。

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>?tls=true");

MongoClientSettingsを使用して X.509 証明書を構成できます。 次のコード サンプルでは、パスワードmySuperSecretPasswordで保護されているclient.p12という名前の証明書ファイルを使用して新しい X.509 証明書オブジェクトを作成します。 次に、コードはこの証明書をMongoClientSettingsSslSettings.ClientCertificates配列に追加します。

var cert = new X509Certificate2("client.p12", "mySuperSecretPassword");
var settings = new MongoClientSettings
{
SslSettings = new SslSettings
{
ClientCertificates = new[] { cert }
},
UseTls = true
};

重要

パスワードを使用して証明書をロードする場合、証明書オブジェクトには秘密キーが含まれている必要があります。 含めない場合、証明書はサーバーに渡されません。

TLS が有効になっている場合、.NET/C# ドライバーはサーバーが提示した証明書を自動的に検証します。 コードをテストするときは、証明書の検証を無効にできます。 これは安全でない TLS と呼ばれます。

安全でない TLS を使用する場合、唯一の要件はサーバーが X.509 証明書を提示することです。 次のいずれかに当てはまる場合でも、ドライバーは証明書を受け入れます。

  • サーバーのホスト名と証明書のサブジェクト名(またはサブジェクトの別名)が一致しません。

  • 証明書の有効期限が切れているか、まだ有効ではありません。

  • 証明書のチェーン内に信頼できるルート証明書がありません。

  • 証明書の目的がサーバー識別には無効です。

安全でない TLS を許可するには、MongoClientSettings オブジェクトの プロパティを使用する方法と、 接続stringのパラメーターを使用する方法の 2 通りがあります。

MongoClientSettingsオブジェクトで安全でない TLS を許可するには、 AllowInsecureTlsプロパティをtrueに設定します。

var settings = new MongoClientSettings
{
UseTls = true,
AllowInsecureTls = true
};
var client = new MongoClient(settings);

接続stringを使用して安全でない TLS を許可するには、接続stringパラメータ tlsInsecuretrue の値を割り当てます。

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>?tls=true&tlsInsecure=true");

警告

本番環境では常にこのオプションをfalseに設定してください。 セキュリティ上の理由から、サーバー証明書が適切に検証されていることが重要です。

X.509 証明書が信頼できなくなった場合、つまり秘密キーが侵害された場合、証明機関は証明書を取り消します。

デフォルトでは、.NET/C# ドライバーは接続前にサーバーの証明書が失効しているかどうかを確認しません。 失効チェックは、MongoClientSettings または接続stringを使用して有効にできます。

MongoClientSettingsを使用して失効チェックを有効にするには、 SslSettings.CheckCertificateRevocationtrueに設定します。

var settings = new MongoClientSettings
{
SslSettings = new SslSettings
{
CheckCertificateRevocation = true
},
UseTls = true
};

接続stringを使用して失効チェックを有効にするには、接続stringパラメータ tlsDisableCertificateRevocationCheckfalse の値を割り当てます。

var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>?tls=true&tlsDisableCertificateRevocationCheck=false");

注意

.NET/C#SslStream ドライバーはデフォルトでは失効をチェックしません。これは .NET フレームワーク における クラスのデフォルトの動作であるためです。 .NET 標準

.NET/C# ドライバーは、Windows、macOS、および Linux で異なる方法で次の失効チェック メカニズムをサポートします。

Windows では、.NET/C# ドライバーは、.NET フレームワークと .NET Core の両方で、OCSP、OCSP ステープリング、および OCSP なしの CRL をサポートしています。

警告

Windows では、OCSP レスポンダーが利用できない場合、.NET/C# ドライバーは「ハード フェイル」を報告し、TLS ハンドシェイクをキャンセルします。 他のオペレーティングシステムとドライバーは「ソフト フェイル」を報告し、接続を続行します。

macOS では、.NET/C# ドライバーは OCSP および OCSP ステープリングをサポートしています。

.NET Core 2.0 以降、ドライバーは OCSP を持たないCRL をサポートしていません。

Linux では、.NET/C# ドライバーは OCSP、OCSP ステープリング、および OCSP なしの CRL をサポートします。

このガイドで説明した接続オプションの詳細については、次の API ドキュメントを参照してください。

戻る

接続オプション