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

TLS/SSL を使用するためにクラスターをアップグレードする

MongoDB サーバーは、同じ TCP ポートで TLS/SSL で暗号化された接続と暗号化されていない接続の両方をリッスンすることをサポートしています。 これにより、MongoDB クラスターのアップグレードで、TLS/SSL 暗号化接続を使用できるようになります。

注意

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

重要

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

TLS/SSL 暗号化を使用しない MongoDB クラスターから、TLS/SSL 暗号化のみを使用する MongoDB クラスターにアップグレードするには、次のローリング アップグレード プロセスを使用します。

注意

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

MongoDB では常に TLS 1.0 以降をサポートしているため、 tlsの設定/オプションはsslオプションと同じ機能を提供します。

  1. クラスターの各ノードで、コマンドライン オプション--tlsModeまたは構成ファイル オプション net.tls.modeallowTLSに設定して、ノードを起動します。 allowTLS設定により、ノードは TLS/SSL と非 TLS/SSL 受信接続の両方を受け入れることができます。 他のサーバーへの接続では、TLS/SSL は使用されません。 その他のTLS/SSL オプション[ 2 ]および特定の構成に必要なその他のオプションを含めます。

    注意

    mongodmongos は、デフォルトで localhost にバインドされます。配置のノードが異なるホスト上で実行されている場合、またはリモート クライアントを配置に接続する場合は、--bind_ip または net.bindIp を指定する必要があります。

    以下に例を挙げます。

    mongod --replSet <name> --tlsMode allowTLS --tlsCertificateKeyFile <TLS/SSL certificate and key file> --tlsCAFile <path to root CA PEM file> <additional options>

    構成ファイルでこれらのオプションを指定するには、 ファイルに次の設定を含めます。

    net:
    tls:
    mode: allowTLS
    PEMKeyFile: <path to TLS/SSL certificate and key PEM file>
    CAFile: <path to root CA PEM file>

    クラスターのすべてのノードをこれらの設定にアップグレードします。

  2. すべてのクライアントを TLS/SSL を使用するように切り替えます。 「クライアントの TLS/SSL 構成 」を参照してください。

  3. クラスターの各ノードで、 setParameterコマンドを使用してtlsModepreferTLSに更新します。 [1] preferTLSnet.tls.modeとして使用すると、ノードは TLS/SSL と非 TLS/SSL 非 SSL 着信接続の両方を受け入れ、他のサーバーへの接続では TLS/SSL が使用されます。 例:

    db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } )

    クラスターのすべてのノードをこれらの設定にアップグレードします。

    この時点で、すべての接続は TLS/SSL を使用するはずです。

  4. クラスターの各ノードで、 setParameterコマンドを使用してtlsModerequireTLSに更新します。 [1] requireTLSnet.tls.modeとして使用すると、ノードは TLS/SSL 以外の接続を拒否します。 例:

    db.adminCommand( { setParameter: 1, tlsMode: "requireTLS" } )
  5. すべてのノードをアップグレードした後、適切な TLS/SSL 設定で構成ファイルを編集し、次回の再起動時にクラスターが TLS/SSL を使用するようにします。

重要

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

TLS/SSL 暗号化を使用しない MongoDB クラスターから、TLS/SSL 暗号化のみを使用する MongoDB クラスターにアップグレードするには、次のローリング アップグレード プロセスを使用します。

注意

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

MongoDB では常に TLS 1.0 以降をサポートしているため、 tlsの設定/オプションはsslオプションと同じ機能を提供します。

  1. クラスターの各ノードで、コマンドライン オプション--sslModeまたは構成ファイル オプションnet.ssl.modeallowSSLに設定して、ノードを起動します。 allowSSL設定により、ノードは TLS/SSL と非 TLS/SSL 受信接続の両方を受け入れることができます。 他のサーバーへの接続では、TLS/SSL は使用されません。 その他のTLS/SSL オプション[ 2 ]および特定の構成に必要なその他のオプションを含めます。

    注意

    mongodmongos は、デフォルトで localhost にバインドされます。配置のノードが異なるホスト上で実行されている場合、またはリモート クライアントを配置に接続する場合は、--bind_ip または net.bindIp を指定する必要があります。

    以下に例を挙げます。

    mongod --replSet <name> --sslMode allowSSL --sslPEMKeyFile <path to TLS/SSL Certificate and key PEM file> --sslCAFile <path to root CA PEM file> <additional options>

    構成ファイルでこれらのオプションを指定するには、 ファイルに次の設定を含めます。

    net:
    ssl:
    mode: <allowSSL>
    PEMKeyFile: <path to TLS/SSL certificate and key PEM file>
    CAFile: <path to root CA PEM file>

    クラスターのすべてのノードをこれらの設定にアップグレードします。

  2. すべてのクライアントを TLS/SSL を使用するように切り替えます。 「クライアントの TLS/SSL 構成 」を参照してください。

  3. クラスターの各ノードで、 setParameterコマンドを使用してsslModepreferSSLに更新します。 [ 1 ] preferSSLnet.ssl.modeとして使用すると、ノードは TLS/SSL と非 TLS/SSL 以外の着信接続の両方を受け入れ、他のサーバーへの接続は TLS/SSL を使用します。 例:

    db.adminCommand( { setParameter: 1, sslMode: "preferSSL" } )

    クラスターのすべてのノードをこれらの設定にアップグレードします。

    この時点で、すべての接続は TLS/SSL を使用するはずです。

  4. クラスターの各ノードで、 setParameterコマンドを使用してsslModerequireSSLに更新します。 [ 1 ] requireSSLnet.ssl.modeとして使用すると、ノードは TLS 以外と SSL 以外の接続を拒否します。 例:

    db.adminCommand( { setParameter: 1, sslMode: "requireSSL" } )
  5. すべてのノードをアップグレードした後、適切な TLS/SSL 設定で構成ファイルを編集し、次回の再起動時にクラスターが TLS/SSL を使用するようにします。

[1]1234 setParameterコマンドを使用する代わりに、適切な TLS/SSL オプションと値を使用してノードを再起動することもできます。
[2]12 Windows と macOS のシステム SSL 証明書ストアを使用できます。 システム SSL 証明書ストアを使用するには、以下を使用します。
  • net.tls.certificateSelector{ }(またはコマンドライン--tlsCertificateSelector net.tls.certificateKeyFileオプション``-certifyKeyFile``)ではなく、 (またはコマンドライン オプション )。
  • net.ssl.certificateSelector net.ssl.PEMKeyFile (またはコマンドライン オプション``--sslPEMKeyFile``) ではなく、(またはコマンドライン オプション--sslCertificateSelector )。
システムの SSL 証明書ストアを使用する場合、 OCSP(オンライン証明書ステータス プロトコル)を使用して証明書の失効状態を検証します。

戻る

クライアントの構成