Docs Menu
Docs Home
/
MongoDBマニュアル
/ / /

TLS/SSL のmongodと の設定mongos

項目一覧

  • Overview
  • 前提条件
  • 認証局
  • mongodおよびmongos証明書鍵ファイル
  • 手順(net.tls 設定を使用)
  • TLS/SSL 証明書と鍵を使用して mongod およびmongos を設定します
  • mongod および mongos をクライアント証明書検証で設定します
  • プロトコルを許可しない
  • TLS/SSL 証明書のパスフレーズ
  • オンライン証明書ローテーション
  • FIPS モードで実行する
  • 次のステップ
  • 手順(net.ssl 設定を使用)
  • TLS/SSL 証明書と鍵を使用して mongod およびmongos を設定します
  • mongod および mongos をクライアント証明書検証で設定します
  • プロトコルを許可しない
  • TLS/SSL 証明書のパスフレーズ
  • FIPS モードで実行する
  • 次のステップ

このドキュメントは、TLS/SSL をサポートする新しい MongoDB インスタンスの構成に役立ちます。 現在 TLS/SSL を使用していないクラスターを TLS/SSL を使用するようにアップグレードする手順については、「 TLS/SSL を使用するようにをアップグレードする」を参照してください。

MongoDB はネイティブ TLS/SSL OS ライブラリを使用します。

プラットフォーム
TLS/SSL ライブラリ
Windows
セキュア チャネル(Schannel)
Linux/BSD
OpenSSL
MacOS
セキュア トランスポート

注意

  • MongoDB は、TLS 1.1 + が利用可能なシステムで TLS 1.0暗号化のサポートを無効にします。

  • MongoDB の TLS/SSL 暗号化では、すべての接続に対して鍵長が 128 ビット以上の強力な TLS/SSL 暗号のみを使用できます。

  • MongoDB の Linux 64 ビット レガシー x64 ビルドには、TLS/SSL のサポートは含まれていません

重要

TLS/SSL、PKI(公開キー基盤)証明書、認証局についての詳細な説明は、このドキュメントの範囲外です。このページでは、TLS/SSL に関する予備知識があり、有効な証明書にアクセスすることを前提としています。

実稼働環境で使用する場合、MongoDB の配置には、認証局によって生成および署名された有効な証明書を使用する必要があります。ユーザーまたは組織は、独立した認証局を作成して維持することも、サードパーティの TLS ベンダーによって生成された証明書を使用することもできます。証明書の取得と管理については、このドキュメントの範囲外です。

メンバー証明書を使用して、シャーディングされたクラスターまたはレプリカセットへのメンバーシップを検証します。メンバー証明書ファイルのパスは net.tls.clusterFile オプションおよび net.tls.certificateKeyFile オプションで構成されます。メンバーには次の構成要件があります。

  • クラスター ノードの設定では、認証に使用される属性の少なくとも 1 つに空でない値を指定する必要があります。デフォルトで MongoDB は次のものを受け入れます。

    • 組織 (O)

    • 組織単位 (OU)

    • ドメインコンポーネント (DC)

    net.tls.clusterAuthX509.extensionValue を設定することで、認証に使用する代替属性を指定できます。

  • クラスター ノード設定には同じ net.tls.clusterAuthX509.attributes を含み、一致する値を使用する必要があります。属性の順序は関係ありません。次の例えでは OOU を設定しますが、 DC は設定しません。

    net:
    tls:
    clusterAuthX509:
    attributes: O=MongoDB, OU=MongoDB Server

注意

enforceUserClusterSeparationパラメータを無効にすると、次の動作が適用されます。

  • 構成ファイルでclusterAuthModekeyFileの場合、 O/OU/DCチェックは無効になります。 これにより、メンバー証明書を持つクライアントは、 $externalデータベースに保存されているユーザーとして認証できるようになります。

  • 構成ファイルでclusterAuthModekeyFileでない場合、サーバーは起動しません。

enforceUserClusterSeparationパラメータをfalseに設定すると、サーバーは、アプリケーションが認証に使用するクライアント証明書と、特権アクセス権を持つクラスター内証明書を区別しません。 これは、 clusterAuthModekeyFileである場合、効果はありません。 ただし、 clusterAuthModex509の場合、許可されたスキームを使用するユーザー証明書はクラスター証明書と複合化され、特権アクセスが付与されます。

次の操作を行うと、既存の証明書に内部特権が付与されます。

  1. このパラメーターで許可された名前を持つユーザーを作成します。

  2. enforceUserClusterSeparationパラメータをfalseに設定します。

  3. clusterAuthModex509に設定します。

enforceUserClusterSeparationフラグによって作成が許可された昇格特権を持つユーザーを削除したことを検証せずに、 keyFileからx509にアップグレードすることはできません。

enforceUserClusterSeparationパラメータをfalseに設定するには、起動時に次のコマンドを実行します。

mongod --setParameter enforceUserClusterSeparation=false

証明書には次の要件があります。

  • 単一の認証局 (CA) が、シャーディングされたクラスターまたはレプリカセットのノードすべての x.509 証明書を発行する必要があります。

  • サブジェクト代替名 (SAN) エントリの少なくとも 1 つは、他のクラスター ノードが使用するサーバー ホスト名と一致する必要があります。SAN を比較する際に、MongoDB は DNS 名または IP アドレスのいずれかを比較できます。

    subjectAltNameを指定しない場合、MongoDB は代わりに共通名(CN)を比較します。 ただし、CN のこの使用は RFC に従って非推奨となります。2818

  • certificateKeyFile として使用される証明書に extendedKeyUsage が含まれている場合、値には clientAuth(「TLS Web クライアント認証」)と serverAuth(「TLS Web サーバー認証」)の両方を含める必要があります。

    extendedKeyUsage = clientAuth, serverAuth
  • clusterFile として使用される証明書に extendedKeyUsage が含まれている場合、値には clientAuth が含まれている必要があります。

    extendedKeyUsage = clientAuth

TLS/SSL 接続を確立する際、mongod/mongos は ID を確立するために、クライアントに証明書鍵ファイルを提示します。[1] 証明書鍵ファイルには公開キー証明書とそれに関連付けられた秘密キーが含まれていますが、クライアントに公開されるのは公開コンポーネントのみです。

MongoDB は認証局によって発行された有効な TLS/SSL 証明書、または自己署名の証明書を使用できます。自己署名証明書を使用する場合、通信チャネルは接続の盗聴を防ぐために暗号化されますが、サーバーの身元は検証されません。これでは中間者攻撃(man-in-the-middle attack)に対して脆弱なままになってしまいます。信頼できる認証局によって署名された証明書を使用することで、MongoDB ドライバーはサーバーの身元を確認できるようになります。

一般に、ネットワークが信頼されていない限り、自己署名証明書の使用は避けてください。

レプリカセットとシャーディングされたクラスターのノードの証明書に関しては、サーバーごとに異なる証明書を使用することをお勧めします。これにより秘密キーの露出が最小限に抑えられ、ホスト名の検証が可能になります。

注意

MongoDB の配置が CA ファイルを使用するように構成されていない場合、クライアント証明書の検証はバイパスされます。

[1] FIPS モードの場合は、証明書が FIPS に準拠している(つまり FIPS 準拠のアルゴリズムを使用している)こと、および秘密キーが PKCS#8 標準を満たしていることを確認します。秘密キーを PKCS#8 形式に変換する必要がある場合は、 openssl pkcs8 などのさまざまな変換ツールが利用できます。

注意

MongoDB は、 net.ssl設定(および--sslコマンドライン オプション)に対応するnet.tls設定(および--tlsコマンドライン オプション)を提供します。 MongoDB は常に TLS 1.0以降をサポートしているため、新しいtls設定はssl設定と同じ機能を提供します。

このセクションの手順では、net.tls 設定を使用します。net.ssl エイリアスの使用手順については、「手順(net.ssl 設定の使用)」を参照してください。

次のセクションでは、TLS/SSL 接続を使用するようにmongod / mongosを構成します。この TLS/SSL 設定により、mongod / mongos は証明書鍵ファイルをクライアントに提示します。ただし、mongod / mongos では、クライアントの ID の確認にクライアントの証明書鍵ファイルを要求しません。クライアントの証明書鍵ファイルを要求するには、「クライアントの証明書の検証を使用して mongodmongos を設定する」を参照してください。

注意

この手順では、net.tls 設定を使用します。net.ssl 設定の使用手順については、「手順(net.ssl 設定の使用)」を参照してください。

TLS/SSL 接続を使用するには、mongod/mongos インスタンスの構成ファイルに次の TLS/SSL 設定を含めます。

設定
ノート

requireTLS に設定します。

この設定は各サーバーが TLS/SSL 暗号化接続のみを使用するように制限します。値 allowTLS または preferTLS のいずれかを指定して、ポートで TLS/SSL の混合モードを使用するように設定することもできます。詳細については net.tls.modeを参照してください。

TLS/SSL 証明書と鍵が含まれるファイルのパスを設定します。

mongod/mongos インスタンスは、インスタンスの ID を確立するためにこのファイルをクライアントに提示します。

例えとして mongod インスタンスの次の構成ファイルを考えてみましょう。

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

Windows と macOS のシステム SSL 証明書ストアを使用できます。システム SSL 証明書ストアを使用するには、証明書鍵ファイルの代わりに net.tls.certificateSelector を指定します。

設定
ノート

requireTLS に設定します。

この設定は各サーバーが TLS/SSL 暗号化接続のみを使用するように制限します。値 allowTLS または preferTLS のいずれかを指定して、ポートで TLS/SSL の混合モードを使用するように設定することもできます。詳細については net.tls.modeを参照してください。

プロパティ( subjectまたはthumbprint )と値に設定します。

この設定は、証明書を選択するために使用されます。 詳細については、 net.tls.certificateSelectorを参照してください。

例えとして mongod インスタンスの次の構成ファイルを考えてみましょう。

net:
tls:
mode: requireTLS
certificateSelector: subject="<CertificateCommonName>"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

上記の構成を使用する mongod インスタンスは、TLS/SSL 接続のみを受け入れることができます。

mongod --config <path/to/configuration/file>

TLS/SSL を使用した接続の詳細については、「暗号化を使用した MongoDB インスタンスへの接続」を参照してください。

Tip

以下も参照してください。

構成ファイルの代わりにコマンドライン オプションを使用して mongodmongos を設定することもできます。

次のセクションでは TLS/SSL 接続を使用し、クライアント証明書の検証を実行するように mongod/mongos を設定します。これらの TLS/SSL 設定では次のようになります。

  • mongod/mongos は検証のために証明書鍵ファイルをクライアントに提示します。

  • mongod/mongos はクライアントの ID を確認するために、クライアントからの証明書鍵ファイルが必要です。

注意

この手順では net.tls 設定を使用します。net.ssl 設定の使用手順については、「手順 (net.ssl設定の使用)」を参照してください。

TLS/SSL 接続を使用してクライアント証明書の検証を実行するには、mongod/mongos インスタンスの構成ファイルに次の TLS/SSL 設定を含めます。

注意

Windows と macOS のシステム SSL 証明書ストアを使用できます。システム SSL 証明書ストアを使用するには、証明書鍵ファイルの代わりに net.ssl.certificateSelector を指定します。

設定
ノート

requireTLS に設定します。

この設定は各サーバーが TLS/SSL 暗号化接続のみを使用するように制限します。値 allowTLS または preferTLS のいずれかを指定して、ポートで TLS/SSL の混合モードを使用するように設定することもできます。詳細については net.tls.modeを参照してください。

TLS/SSL 証明書と鍵が含まれるファイルのパスを設定します。

mongod/mongos インスタンスは、インスタンスの ID を確立するためにこのファイルをクライアントに提示します。

クライアント証明書を確認するため、証明書チェーンを含むファイルのパスに設定します。

mongod/mongos インスタンスはこのファイルを使用して、クライアントによって提示された証明書を検証します。証明書チェーンには、ルート認証局の証明書が含まれます。

重要

TLS/SSL を有効にして mongod インスタンスを起動する場合は、--tlsCAFile フラグ、net.tls.CAFile 構成オプション、tlsUseSystemCA パラメーターのいずれかの値を指定する必要があります。

--tlsCAFiletls.CAFiletlsUseSystemCA は、すべて相互に排他的です。

例えとして mongod インスタンスの次の構成ファイルを考えてみましょう。

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

上記の構成を使用する mongod インスタンスは、TLS/SSL 接続のみを受け入れることができ、クライアントからの有効な証明書を必要とします。

mongod --config <path/to/configuration/file>

クライアントは TLS/SSL 接続を指定し、証明書鍵ファイルをインスタンスに提示する必要があります。TLS/SSL を使用した接続の詳細については、「クライアント証明書を必要とする MongoDB インスタンスへの接続」を参照してください。

Tip

以下も参照してください。

構成ファイルの代わりにコマンドライン オプションを使用して mongodmongos を設定することもできます。

注意

この手順では、net.tls 設定を使用します。net.ssl 設定の使用手順については、「手順(net.ssl 設定の使用)」を参照してください。

失効した証明書を持つクライアントが mongod または mongos インスタンスに接続できないようにするには、CRL(Certificate Revocation List、証明書失効リスト)を使用できます。

CRL ファイルを指定するには、net.tls.CRLFile に失効した証明書を含むファイルを設定します。

以下に例を挙げます。

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
CRLFile: /etc/ssl/revokedCertificates.pem

/etc/ssl/revokedCertificates.pem ファイルにリストされている証明書を提示するクライアントは接続できません。

Tip

以下も参照してください。

コマンドライン オプションを使用して失効した証明書リストを設定することもできます。

ほとんどの場合、クライアントが提示する証明書が有効であることを確認するのが重要です。ただし、クライアント証明書を提示できないクライアントや、証明書の使用に移行途中のクライアントがある場合は、証明書を提示するクライアントからの証明書のみを検証することをお勧めします。

注意

この手順では、 net.tls設定を使用します。 net.ssl設定の使用手順については、「手順( net.ssl設定の使用) 」を参照してください。

証明書を提示しないクライアントのクライアント証明書の検証をバイパスするには、net.tls.allowConnectionsWithoutCertificatestrue に設定します。

以下に例を挙げます。

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
allowConnectionsWithoutCertificates: true

これらの設定で実行中の mongod/mongos では、次からの接続が許可されます。

  • 証明書を提示しないクライアント。

  • 有効な証明書を提示するクライアント。

注意

クライアントが証明書を提示する場合、その証明書は有効な証明書である必要があります。

証明書を提示していない接続も含め、すべての接続は TLS/SSL を使用して暗号化されます。

クライアントの TLS/SSL 接続の詳細については、「クライアントの TLS/SSL 構成」を参照してください。

Tip

以下も参照してください。

コマンドライン オプションを使用して構成することもできます。

注意

この手順では、 net.tls設定を使用します。 net.ssl設定の使用手順については、「手順( net.ssl設定の使用) 」を参照してください。

MongoDB サーバーが特定のプロトコルを使用する着信接続を受け入れないようにするには、許可されていないプロトコルに設定された net.tls.disabledProtocols を含めます。

例えとして次の構成では、mongod/mongosTLS1_0 または TLS1_1 を使用する着信接続を受け入れないようにします。

net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
disabledProtocols: TLS1_0,TLS1_1

Tip

以下も参照してください。

コマンドライン オプションを使用して構成することもできます。

mongod/mongos の証明書鍵ファイルが暗号化されている場合は、パスフレーズに設定された net.tls.certificateKeyFilePassword を含めます。

Tip

クリアテキストでパスフレーズを指定しないで済むように、構成ファイルで展開値を使用できます。

Tip

以下も参照してください。

コマンドライン オプションを使用して構成することもできます。

MongoDB 5.0 以降では、次の証明書鍵ファイルをオンデマンドでローテーションできます。

1 つまたは複数の証明書をローテーションする。

  1. 次の制約に注意しながら、ファイルシステム上でローテーションしたい証明書を置き換えます。

    • 新しい証明書はそれぞれ、置き換える証明書と同じファイル名同じファイルパスを持っている必要があります。

    • 暗号化された TLS Certificate をローテーションする場合、そのパスワードは古い証明書のパスワードと同じである必要があります(certificateKeyFilePassword 構成ファイル設定で指定)。証明書のローテーションでは、対話型のパスワード プロンプトはサポートされません。

  2. 証明書ローテーションを実行する またはmongosh mongodmongosインスタンスに接続します。

  3. rotateCertificates コマンドまたは db.rotateCertificates() shell メソッドを実行して、mongod または mongos インスタンスで使用される証明書をローテーションします。

証明書のローテーションが行われると、次のようになります。

  • mongod または mongos インスタンスへの既存の接続は終了されず、古い証明書が引き続き使用されます。

  • 新しい接続では新しい証明書が使用されます。

証明書ファイルが正しくない、期限切れ、取り消されている、または見つからない場合、証明書のローテーションは失敗しますが、既存の TLS 構成が無効になったり、実行中の mongod または mongos プロセスが終了したりすることはありません。

MongoDB 5.0 以前のバージョンでは、証明書のローテーションにはダウンタイムが必要であり、通常はメンテナンスウィンドウ中に実行されていました。

追加の考慮事項と完全な使用手順については、rotateCertificates または db.rotateCertificates() を参照してください。

注意

FIPS に準拠した TLS/SSL は MongoDB Enterprise でのみ利用できます。詳細については「MongoDB を FIPS 用に構成する」を参照してください。

詳細については「MongoDB を FIPS 用に構成する」を参照してください。

クライアントの TLS/SSL サポートを構成するには、「クライアントの TLS/SSL 構成」を参照してください。

注意

MongoDB は、 net.ssl設定(および--sslコマンドライン オプション)に対応するnet.tls設定(および--tlsコマンドライン オプション)を提供します。 MongoDB は常に TLS 1.0以降をサポートしているため、新しいtls設定はssl設定と同じ機能を提供します。

このセクションの手順では、 net.ssl設定を使用します。 net.tlsエイリアスの使用手順については、「手順( net.tls設定の使用)」を参照してください。

次のセクションでは、TLS/SSL 接続を使用するようにmongod / mongosを構成します。この TLS/SSL 設定により、mongod / mongos は証明書鍵ファイルをクライアントに提示します。ただし、mongod / mongos では、クライアントの ID の確認にクライアントの証明書鍵ファイルを要求しません。クライアントの証明書鍵ファイルを要求するには、「クライアントの証明書の検証を使用して mongodmongos を設定する」を参照してください。

TLS/SSL 接続を使用するには、mongod/mongos インスタンスの構成ファイルに次の TLS/SSL 設定を含めます。

設定
ノート
net.ssl.mode

requireSSL に設定します。

この設定は各サーバーが TLS/SSL 暗号化接続のみを使用するように制限します。 TLS/SSL の混合モードを使用するには、 allowSSLまたはpreferSSLを指定することもできます。 詳細については、 net.ssl.modeを参照してください。

net.ssl.PEMKeyFile

TLS/SSL 証明書と鍵を含む.pemファイルに設定します。

mongod/mongos インスタンスは、インスタンスの ID を確立するためにこのファイルをクライアントに提示します。

キーが暗号化されている場合は、パスフレーズを指定します( net.ssl.PEMKeyPassword )。

例えとして mongod インスタンスの次の構成ファイルを考えてみましょう。

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

Windows と macOS のシステム SSL 証明書ストアを使用できます。システム SSL 証明書ストアを使用するには、証明書鍵ファイルの代わりに net.ssl.certificateSelector を指定します。

設定
ノート
net.ssl.mode

requireSSL に設定します。

この設定は各サーバーが TLS/SSL 暗号化接続のみを使用するように制限します。 TLS/SSL の混合モードを使用するには、 allowSSLまたはpreferSSLを指定することもできます。 詳細については、 net.ssl.modeを参照してください。

net.ssl.certificateSelector

プロパティ( subjectまたはthumbprint )と値に設定します。

この設定は、証明書を選択するために使用されます。 詳しくは、 net.ssl.certificateSelectorを参照してください。

例えとして mongod インスタンスの次の構成ファイルを考えてみましょう。

net:
ssl:
mode: requireSSL
certificateSelector: subject="<CertificateCommonName>"
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

上記の構成を使用する mongod インスタンスは、TLS/SSL 接続のみを受け入れることができます。

mongod --config <path/to/configuration/file>

TLS/SSL を使用した接続の詳細については、「暗号化を使用した MongoDB インスタンスへの接続」を参照してください。

Tip

以下も参照してください。

構成ファイルの代わりにコマンドライン オプションを使用して mongodmongos を設定することもできます。

  • mongod については、--sslMode--sslPEMKeyFile--sslCertificateSelector を参照してください。

  • mongos については、--sslMode--sslPEMKeyFile--sslCertificateSelector を参照してください。

次のセクションでは TLS/SSL 接続を使用し、クライアント証明書の検証を実行するように mongod/mongos を設定します。これらの TLS/SSL 設定では次のようになります。

  • mongod/mongos は検証のために証明書鍵ファイルをクライアントに提示します。

  • mongod/mongos はクライアントの ID を確認するために、クライアントからの証明書鍵ファイルが必要です。

TLS/SSL 接続を使用するには、mongod/mongos インスタンスの構成ファイルに次の TLS/SSL 設定を含めます。

注意

Windows と macOS のシステム SSL 証明書ストアを使用できます。システム SSL 証明書ストアを使用するには、証明書鍵ファイルの代わりに net.ssl.certificateSelector を指定します。

設定
ノート
net.ssl.mode

requireSSL に設定します。

この設定は各サーバーが TLS/SSL 暗号化接続のみを使用するように制限します。 TLS/SSL の混合モードを使用するには、 allowSSLまたはpreferSSLを指定することもできます。 詳細については、 net.ssl.modeを参照してください。

net.ssl.PEMKeyFile

TLS/SSL 証明書と鍵を含む.pemファイルに設定します。

mongod/mongos インスタンスは、インスタンスの ID を確立するためにこのファイルをクライアントに提示します。

キーが暗号化されている場合は、パスフレーズを指定します( net.ssl.PEMKeyPassword )。

net.ssl.CAFile

クライアント証明書を確認するため、証明書チェーンを含むファイルのパスに設定します。

mongod/mongos インスタンスはこのファイルを使用して、クライアントによって提示された証明書を検証します。証明書チェーンには、ルート認証局の証明書が含まれます。

例えとして mongod インスタンスの次の構成ファイルを考えてみましょう。

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
systemLog:
destination: file
path: "/var/log/mongodb/mongod.log"
logAppend: true
storage:
dbPath: "/var/lib/mongodb"
processManagement:
fork: true
net:
bindIp: localhost,mongodb0.example.net
port: 27017

上記の構成を使用する mongod インスタンスは、TLS/SSL 接続のみを受け入れることができ、クライアントからの有効な証明書を必要とします。

mongod --config <path/to/configuration/file>

クライアントは TLS/SSL 接続を指定し、証明書鍵ファイルをインスタンスに提示する必要があります。TLS/SSL を使用した接続の詳細については、「クライアント証明書を必要とする MongoDB インスタンスへの接続」を参照してください。

Tip

以下も参照してください。

構成ファイルの代わりにコマンドライン オプションを使用して mongodmongos を設定することもできます。

  • mongod については、--sslMode--sslPEMKeyFile--sslCAFile を参照してください。

  • mongos については、--sslMode--sslPEMKeyFile--sslCAFile を参照してください。

失効した証明書を持つクライアントが mongod または mongos インスタンスに接続できないようにするには、CRL(Certificate Revocation List、証明書失効リスト)を使用できます。

CRLファイルを指定するには、net.ssl.CRLFile に失効した証明書を含むファイルを設定します。

以下に例を挙げます。

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
CRLFile: /etc/ssl/revokedCertificates.pem

/etc/ssl/revokedCertificates.pem ファイルにリストされている証明書を提示するクライアントは接続できません。

Tip

以下も参照してください。

コマンドライン オプションを使用して失効した証明書リストを設定することもできます。

  • mongodについては--sslCRLFileを参照してください。

  • mongosについては--sslCRLFileを参照してください。

ほとんどの場合、クライアントが提示する証明書が有効であることを確認するのが重要です。ただし、クライアント証明書を提示できないクライアントや、証明書の使用に移行途中のクライアントがある場合は、証明書を提示するクライアントからの証明書のみを検証することをお勧めします。

証明書を提示しないクライアントのクライアント証明書検証をバイパスするには、net.ssl.allowConnectionsWithoutCertificatestrue に設定します。

以下に例を挙げます。

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
allowConnectionsWithoutCertificates: true

これらの設定で実行中の mongod/mongos では、次からの接続が許可されます。

  • 証明書を提示しないクライアント。

  • 有効な証明書を提示するクライアント。

注意

クライアントが証明書を提示する場合、その証明書は有効な証明書である必要があります。

証明書を提示していない接続も含め、すべての接続は TLS/SSL を使用して暗号化されます。

クライアントの TLS/SSL 接続の詳細については、「クライアントの TLS/SSL 構成」を参照してください。

Tip

以下も参照してください。

コマンドライン オプションを使用して構成することもできます。

  • mongodについては--sslAllowConnectionsWithoutCertificatesを参照してください。

  • mongosについては--sslAllowConnectionsWithoutCertificatesを参照してください。

MongoDB サーバーが特定のプロトコルを使用する接続を受け入れないようにするには、net.ssl.disabledProtocols に許可されていないプロトコルを設定します。

例えとして次の構成では、mongod/mongosTLS1_0 または TLS1_1 を使用する着信接続を受け入れないようにします。

net:
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongodb.pem
CAFile: /etc/ssl/caToValidateClientCertificates.pem
disabledProtocols: TLS1_0,TLS1_1

Tip

以下も参照してください。

コマンドライン オプションを使用して構成することもできます。

  • mongodについては--sslDisabledProtocolsを参照してください。

  • mongosについては--sslDisabledProtocolsを参照してください。

mongod / mongosの証明書鍵ファイルが暗号化されている場合は、パスフレーズに設定されたnet.ssl.PEMKeyPasswordを含めます。

Tip

以下も参照してください。

コマンドライン オプションを使用して構成することもできます。

  • mongodについてはsslPEMKeyPasswordを参照してください。

  • mongosについては--sslPEMKeyPasswordを参照してください。

注意

FIPS に準拠した TLS/SSL は MongoDB Enterprise でのみ利用できます。詳細については「MongoDB を FIPS 用に構成する」を参照してください。

詳細については「MongoDB を FIPS 用に構成する」を参照してください。

クライアントの TLS/SSL サポートを構成するには、「クライアントの TLS/SSL 構成」を参照してください。

戻る

TLS/SSL