TLS/SSL (トランスポート暗号化)
TLS/SSL
MongoDB は、MongoDB のすべてのネットワーク トラフィックを暗号化するために TLS/SSL(Transport Layer Security/Secure Sockets Layer)をサポートしています。TLS/SSL により、MongoDB ネットワーク トラフィックは対象のクライアントのみが読み取れるようになります。
TLS バージョン
MongoDB は、TLS 1.1 + が利用可能なシステムで TLS 1.0暗号化のサポートを無効にします。
TLS ライブラリ
MongoDB はネイティブ TLS/SSL OS ライブラリを使用します。
プラットフォーム | TLS/SSL ライブラリ |
---|---|
Windows | セキュア チャネル(Schannel) |
Linux/BSD | OpenSSL |
MacOS | セキュア トランスポート |
TLS/SSL 暗号
MongoDB の TLS/SSL 暗号化では、すべての接続に対して鍵長が 128 ビット以上の強力な TLS/SSL 暗号のみを使用できます。
フォワード シークレシー
フォワード シークレシー暗号スイートは、サーバーの秘密キーで保護されているが送信されない一時的なセッション鍵を作成します。エフェメラル キーを使用すると、サーバーの秘密キーが侵害された場合でも、侵害されたキーで過去のセッションを復号化することはできません。
MongoDB は、エフェメラル ディフィー ヘルマン(DHE)アルゴリズムとエフェメラル楕円曲線ディフィー ヘルマン(ECDHE)アルゴリズムを使用するフォワード シークレシー暗号スイートをサポートしています。
エフェメラル楕円曲線ディフィー ヘルマン(ECDHE)
プラットフォーム | サポート レベル |
---|---|
Linux | Linux プラットフォームの OpenSSL が自動曲線選択をサポートしている場合、MongoDB はエフェメラル楕円曲線ディフィー ヘルマン(ECDHE)のサポートを有効にします。 それ以外の場合、Linux プラットフォームの OpenSSL が自動曲線選択をサポートしていない場合、MongoDB では名前付き曲線として |
Windows | エフェメラル楕円曲線ディフィー ヘルマン(ECDHE)は、Windows のネイティブ TLS/SSL ライブラリであるセキュア チャネル(Schannel)の使用によって暗黙的にサポートされています。 |
MacOS | エフェメラル楕円曲線ディフィー ヘルマン(ECDHE)は、macOS のネイティブ TLS/SSL ライブラリであるセキュア トランスポートの使用によって暗黙的にサポートされています。 |
ECDHE 暗号スイートは静的 RSA 暗号スイートよりも動作が遅くなります。ECDHE のパフォーマンスを向上させるには、楕円曲線デジタル署名アルゴリズム(ECDSA
)を使用する証明書を使用できます。詳細については、「フォワード シークレシー パフォーマンス」も参照してください
エフェメラル ディフィー ヘルマン(DHE)
プラットフォーム | サポート レベル |
---|---|
Linux | MongoDB でエフェメラル ディフィー ヘルマン(DHE)のサポートを有効にします。
|
Windows | エフェメラル ディフィー ヘルマン(DHE)は、Windows のネイティブ TLS/SSL ライブラリであるセキュア チャネル(Schannel)の使用によって暗黙的にサポートされています。 |
MacOS | エフェメラル ディフィー ヘルマン(DHE)は、macOS のネイティブ TLS/SSL ライブラリであるセキュア トランスポートの使用によって暗黙的にサポートされています。 |
注意
クライアントが DHE と暗号スイートをネゴシエートしても、サーバーが選択したパラメーターを受け入れることができない場合、TLS 接続は失敗します。
強いパラメーター(つまり、サイズが 1024 以上の場合)は、Oracle から延長サポートを購入しない限り、Java 6 および 7 ではサポートされていません。ただし、Java 7 は ECDHE を優先してサポートするため、利用可能であれば ECDHE をネゴシエートします。
DHE (および ECDHE)暗号スイートは静的 RSA 暗号スイートよりもパフォーマンスが遅く、DHE は ECDHE よりも大幅に遅くなります。 詳細については、「フォワード シークレシー パフォーマンス」を参照してください。
フォワード シークレシー パフォーマンス
DHE および ECDHE 暗号スイートは静的 RSA 暗号スイートよりも遅く、DHE は ECDHE よりも大幅に遅くなります。
ECDHE のパフォーマンスを向上させるには、楕円曲線デジタル署名アルゴリズム(ECDSA
)を使用する証明書を使用できます。あるいは、次の例のように opensslCipherConfig
パラメーターを使用して ECDHE 暗号スイートを無効にすることもできます(これによりDHEも無効になります)。
mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!kECDHE:!ECDHE:!DHE:!kDHE@STRENGTH'
パフォーマンス上の理由で DHE 暗号スイートのサポートを無効にする必要がある場合は、次の例のように opensslCipherConfig
パラメーターを使用できます。
mongod --setParameter opensslCipherConfig='HIGH:!EXPORT:!aNULL:!DHE:!kDHE@STRENGTH'
証明書
MongoDB で TLS/SSL を使用するには、連結された証明書コンテナである PEM
ファイルとして TLS/SSL 証明書が必要です。
MongoDB は認証局によって発行された有効な TLS/SSL 証明書、または自己署名の証明書を使用できます。本番環境で使用する場合、MongoDB の配置には、同一の認証局によって生成および署名された有効な証明書を使用する必要があります。独立した認証局を作成して維持することも、サードパーティの TLS ベンダーによって生成された証明書を使用することもできます。
信頼できる認証局によって署名された証明書を使用することで、MongoDB ドライバーはサーバーの身元を確認できるようになります。
例については、「クライアントの TLS/SSL 構成」を参照してください。
証明書の有効期限の警告
が x を表示した場合、 mongod
/ mongos
は接続時に警告を記録します。 509証明書はmongod/mongos
ホスト システム時間から30
日以内に期限切れになります。
OCSP(オンライン証明書ステータスプロトコル)
MongoDB 6 . 0以降では、最初の同期中にocspEnabled
がtrue
に設定されている場合、すべてのノードがOCSPレスポンダに到達できる必要があります。
ノードが STARTUP2
状態で失敗した場合、tlsOCSPVerifyTimeoutSecs
を 5
未満の値に設定します。
証明書の失効を確認するために、MongoDB はデフォルトで OCSP(Online Certificate Status Protocol、オンライン証明書ステータス プロトコル)を有効(enables
)にします。OCSP を使用すると、Certificate Revocation List (CRL)
を定期的にダウンロードして、アップデートされた CRL を使って mongod
や mongos
を再起動する必要がなくなります。
MongoDB は、OCSP サポートの一環として、Linux 上で以下をサポートします。
OCSP ステープリング 。OCSP ステープリングを使用すると、
mongod
インスタンスおよびmongos
インスタンスは、TLS/SSL ハンドシェイク中にこれらの証明書をクライアントに提供するときに、証明書に OCSP ステータス応答を添付、つまり「ステープリング(ホチキス止め)」します。OCSP ステータス応答が証明書に添付されているため、OCSP ステープリングでは、提供された証明書の OCSP ステータスを取得するためにクライアントが別のリクエストを行う必要がありません。OCSP must-staple 拡張機能。OCSP must-staple は、サーバー証明書に追加できる拡張機能であり、TLS/SSL ハンドシェイク中にクライアントが証明書を受信するときに OCSP ステープリングを要求するように指示します。
MongoDB は、次の OCSP 関連のパラメーターも提供します。
Parameter | 説明 |
---|---|
OCSP サポートを有効または無効にします。 | |
ステープリングされた OCSP ステータス応答をリフレッシュする前に待機する時間を秒単位で指定します。 | |
これらのパラメーターは、setParameter
構成ファイル設定または --setParameter
コマンドライン オプションを使用してスタートアップに設定できます。
注意
MongoDB 5.0 以降では、rotateCertificates
コマンドと db.rotateCertificates()
メソッドによって、ステープリングされた OCSP 応答もリフレッシュされます。
本人認証
TLS/SSL では、接続の暗号化に加えて、クライアント認証、およびレプリカセットおよびシャーディングされたクラスターのノードの内部認証の両方で、証明書を使用した認証が可能になります。
詳細については、以下を参照してください。
FIPS モード
注意
エンタープライズ機能
MongoDB Enterprise でのみ使用できます。
連邦情報処理標準(FIPS)は、データを安全に暗号化および復号化するソフトウェア モジュールとライブラリを認証するために使用される米国政府のコンピューター セキュリティ標準です。MongoDB は、OpenSSL の FIPS 140-2 認定ライブラリを使用して実行するように構成できます。FIPS をデフォルトで実行するように構成するか、必要に応じてコマンド ラインから実行するように構成します。
例については、「MongoDB を FIPS 用に構成」を参照してください。