TLS/SSL を使用するためにクラスターをアップグレードする
MongoDB サーバーは、同じ TCP ポートで TLS/SSL で暗号化された接続と暗号化されていない接続の両方をリッスンすることをサポートしています。 これにより、MongoDB クラスターのアップグレードで、TLS/SSL 暗号化接続を使用できるようになります。
注意
MongoDB は、TLS 1.1 + が利用可能なシステムで TLS 1.0暗号化のサポートを無効にします。
手順(tls
設定を使用)
重要
TLS/SSL、PKI(公開キー基盤)証明書、認証局についての詳細な説明は、このドキュメントの範囲外です。このページでは、TLS/SSL に関する予備知識があり、有効な証明書にアクセスすることを前提としています。
TLS/SSL 暗号化を使用しない MongoDB クラスターから、TLS/SSL 暗号化のみを使用する MongoDB クラスターにアップグレードするには、次のローリング アップグレード プロセスを使用します。
注意
このセクションの手順では、 tls
設定/オプションを使用します。 ssl
エイリアスの使用手順については、「 手順( ssl
設定の使用) 」を参照してください。
MongoDB では常に TLS 1.0 以降をサポートしているため、 tls
の設定/オプションはssl
オプションと同じ機能を提供します。
クラスターの各ノードで、コマンドライン オプション
--tlsMode
または構成ファイル オプションnet.tls.mode
をallowTLS
に設定して、ノードを起動します。allowTLS
設定により、ノードは TLS/SSL と非 TLS/SSL 受信接続の両方を受け入れることができます。 他のサーバーへの接続では、TLS/SSL は使用されません。 その他のTLS/SSL オプション[ 2 ]および特定の構成に必要なその他のオプションを含めます。注意
mongod
とmongos
は、デフォルトで 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 certificateKeyFile: <path to TLS/SSL certificate and key PEM file> CAFile: <path to root CA PEM file> クラスターのすべてのノードをこれらの設定にアップグレードします。
すべてのクライアントを TLS/SSL を使用するように切り替えます。 「クライアントの TLS/SSL 構成 」を参照してください。
クラスターの各ノードで、
setParameter
コマンドを使用してtlsMode
をpreferTLS
に更新します。 [1]preferTLS
をnet.tls.mode
として使用すると、ノードは TLS/SSL と非 TLS/SSL 非 SSL 着信接続の両方を受け入れ、他のサーバーへの接続では TLS/SSL が使用されます。 例:db.adminCommand( { setParameter: 1, tlsMode: "preferTLS" } ) クラスターのすべてのノードをこれらの設定にアップグレードします。
この時点で、すべての接続は TLS/SSL を使用するはずです。
クラスターの各ノードで、
setParameter
コマンドを使用してtlsMode
をrequireTLS
に更新します。 [1]requireTLS
をnet.tls.mode
として使用すると、ノードは TLS/SSL 以外の接続を拒否します。 例:db.adminCommand( { setParameter: 1, tlsMode: "requireTLS" } ) すべてのノードをアップグレードした後、適切な TLS/SSL 設定で構成ファイルを編集し、次回の再起動時にクラスターが TLS/SSL を使用するようにします。
手順(ssl
設定を使用)
重要
TLS/SSL、PKI(公開キー基盤)証明書、認証局についての詳細な説明は、このドキュメントの範囲外です。このページでは、TLS/SSL に関する予備知識があり、有効な証明書にアクセスすることを前提としています。
TLS/SSL 暗号化を使用しない MongoDB クラスターから、TLS/SSL 暗号化のみを使用する MongoDB クラスターにアップグレードするには、次のローリング アップグレード プロセスを使用します。
注意
このセクションの手順では、 ssl
設定/オプションを使用します。 tls
エイリアスの使用手順については、「手順( tls
設定の使用) 」を参照してください。
MongoDB では常に TLS 1.0 以降をサポートしているため、 tls
の設定/オプションはssl
オプションと同じ機能を提供します。
クラスターの各ノードで、コマンドライン オプション
--sslMode
または構成ファイル オプションnet.ssl.mode
をallowSSL
に設定して、ノードを起動します。allowSSL
設定により、ノードは TLS/SSL と非 TLS/SSL 受信接続の両方を受け入れることができます。 他のサーバーへの接続では、TLS/SSL は使用されません。 その他のTLS/SSL オプション[ 2 ]および特定の構成に必要なその他のオプションを含めます。注意
mongod
とmongos
は、デフォルトで 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> クラスターのすべてのノードをこれらの設定にアップグレードします。
すべてのクライアントを TLS/SSL を使用するように切り替えます。 「クライアントの TLS/SSL 構成 」を参照してください。
クラスターの各ノードで、
setParameter
コマンドを使用してsslMode
をpreferSSL
に更新します。 [ 1 ]preferSSL
をnet.ssl.mode
として使用すると、ノードは TLS/SSL と非 TLS/SSL 以外の着信接続の両方を受け入れ、他のサーバーへの接続は TLS/SSL を使用します。 例:db.adminCommand( { setParameter: 1, sslMode: "preferSSL" } ) クラスターのすべてのノードをこれらの設定にアップグレードします。
この時点で、すべての接続は TLS/SSL を使用するはずです。
クラスターの各ノードで、
setParameter
コマンドを使用してsslMode
をrequireSSL
に更新します。 [ 1 ]requireSSL
をnet.ssl.mode
として使用すると、ノードは TLS 以外と SSL 以外の接続を拒否します。 例:db.adminCommand( { setParameter: 1, sslMode: "requireSSL" } ) すべてのノードをアップグレードした後、適切な TLS/SSL 設定で構成ファイルを編集し、次回の再起動時にクラスターが TLS/SSL を使用するようにします。
[1] | ( 1 、 2 、 3 、 4 ) setParameter コマンドを使用する代わりに、適切な TLS/SSL オプションと値を使用してノードを再起動することもできます。 |
[2] | ( 1 、 2 ) Windows と macOS のシステム SSL 証明書ストアを使用できます。 システム SSL 証明書ストアを使用するには、以下を使用します。
|