AI エージェント向け: ドキュメントインデックスは https://www.mongodb.com/ja-jp/docs/llms.txt で利用できます。すべてのページの markdown バージョンは、いずれかの URL パスに .md を追加することで利用できます。
Docs Menu

自己管理型配置での TLS の構成

このチュートリアルでは、 自己管理型レプリカセットで TLS を構成する方法を説明します。クラスター内 mTLS を使用するかどうかに基づいてアプローチを選択します。これは、ノード間で X.509認証を有効にするために必要です。

重要

これらの手順は、自己管理型MongoDB配置に適用されます。 MongoDB Atlasクラスターはデフォルトで TLS を使用します。 Cloud Managerまたは Ops Manager を使用する場合は、配置管理ツールを通じて TLS を構成します。

開始する前に、次のものがあることを確認してください。

  • 各ノードに localhostmongo0.example.com などのホスト名が設定されている自己管理型レプリカセット。現在、レプリカセット内のノードに TLS は設定されていません。

  • サーバー証明書の取得チュートリアルに従って取得した各ノードの TLS サーバー証明書(mongo0.pemなど)。

  • サーバー証明書に署名するための CA 証明書。例: ca.pem

  • 各ノード上の mongod 構成ファイルへのアクセス。

クラスター内 mTLS またはサーバー ノード間の X.509 認証が不要な場合は、この手順に従ってください。

1

各ノードはキーファイルのコンテンツを使用して、配置の他のノードを認証します。次のコマンドを使用してキーファイルを作成します。

openssl rand -base64 756 > /etc/ssl/mongodb/keyfile
chmod 400 /etc/ssl/mongodb/keyfile

キーファイルを配置内の各ノードにコピーします。キーファイルのパーミッションを制限して、mongod プロセスのみがファイルを読み取れるようにします。

2

各ノードで、mongod 構成ファイルを見つけて開きます。ファイルが存在しない場合は作成します。次の TLS オプションを追加します。証明書ファイルへの絶対パスを使用します。

たとえば、プライマリ ノードの構成ファイルは次のようになります。

net:
tls:
mode: allowTLS
certificateKeyFile: /etc/ssl/mongodb/mongo0.pem
CAFile: /etc/ssl/mongodb/ca.pem
allowConnectionsWithoutCertificates: true
security:
clusterAuthMode: keyFile
keyFile: /etc/ssl/mongodb/keyfile
setParameter:
tlsWithholdClientCertificate: true
  • allowTLS に設定された mode は TLS 接続を受け入れますが、必要としていません。これにより、ノードはレプリケーションを中断することなくローリング再起動を完了できます。

  • certificateKeyFile はノードの証明書を指定します。ファイル名を、構成する特定のノードの証明書キーファイルに置き換えます。CAFile はノードの証明書に署名した CA 証明書を指定します。

  • allowConnectionsWithoutCertificates TLS 証明書を提供せずにクライアントが接続できます。

  • clusterAuthModekeyFile に設定すると、ノードはキーファイルを使用して認証できるようになります。keyFile は、ノード間の認証に使用するキーファイルを指定します。

  • tlsWithholdClientCertificate は、クラスター内の他のノードに送信接続を行うときに、ノードがサーバー証明書を提示するのを防ぎます。これは必要であり、証明書に clientAuth EKU が含まれていない場合、ノードがクライアント認証にサーバー認証証明書を使用するのを防ぐためです。

3

新しい TLS 構成を適用するには、mongod プロセスを再起動します。ダウンタイムなしで構成を適用するには、ノードをローリング方式で再起動します。

配置の各ホストで、セカンダリノードから開始し、プライマリノードで終了するまで、次の操作を実行します。

sudo systemctl restart mongod

ローリング再起動が正常に完了したことを確認するには、各ホストで次のコマンドを実行します。

sudo systemctl status mongod
4

TLS が有効になってすべてのノードが正常に再起動したら、各ノードの構成ファイルを更新します。すべてのクライアントとノードの暗号化された接続を強制するには、net.tls.modeallowTLS から requireTLS に変更します。

net:
tls:
mode: requireTLS
5

新しい TLS 構成を適用するには、mongod プロセスを再起動します。ダウンタイムなしで構成を適用するには、ノードをローリング方式で再起動します。

配置の各ホストで、セカンダリノードから開始し、プライマリノードで終了するまで、次の操作を実行します。

sudo systemctl restart mongod

ローリング再起動が正常に完了したことを確認するには、各ホストで次のコマンドを実行します。

sudo systemctl status mongod

この手順に従って、レプリカセットを構成して、ノード間のクラスター内 mTLS と X.509 認証を使用するようにします。

1

重要

ノード証明書には、クラスター内serverAuth clientAuthmTLS 用の と EKU の両方が含まれている必要があります。証明書にclientAuth が含まれていない場合は、代替の構成オプションについては、「 mTLS テクニカル アドバイザーに影響する公開認証局ポリシーの変更 」を参照してください。

各ノードで、mongod 構成ファイルを見つけて開きます。ファイルが存在しない場合は作成します。次の TLS オプションを追加します。証明書ファイルへの絶対パスを使用します。

たとえば、プライマリ ノードの構成ファイルは次のようになります。

net:
tls:
mode: allowTLS
certificateKeyFile: /etc/ssl/mongodb/mongo0.pem
CAFile: /etc/ssl/mongodb/ca.pem
allowConnectionsWithoutCertificates: true
clusterAuthX509:
attributes: O=MongoDB
security:
clusterAuthMode: x509
  • allowTLS に設定された mode は TLS 接続を受け入れますが、必要としていません。これにより、ノードはレプリケーションを中断することなくローリング再起動を完了できます。

  • certificateKeyFile はノードの証明書を指定します。ファイル名を、構成する特定のノードの証明書キーファイルに置き換えます。CAFile はノードの証明書に署名した CA 証明書を指定します。

  • allowConnectionsWithoutCertificates TLS 証明書を提供せずにクライアントが接続できます。

  • net.tls.clusterAuthX509.attributes は、ノードを通常のクライアントではなく、クラスターのノードとして識別する X.509 証明書属性を指定します。必要な証明書属性については、ノード X.509 証明書 を参照してください。

  • clusterAuthModex509 に設定すると、ノードは X.509 証明書を使用して認証できるようになります。

2

新しい TLS 構成を適用するには、mongod プロセスを再起動します。ダウンタイムなしで構成を適用するには、ノードをローリング方式で再起動します。

配置の各ホストで、セカンダリノードから開始し、プライマリノードで終了するまで、次の操作を実行します。

sudo systemctl restart mongod

ローリング再起動が正常に完了したことを確認するには、各ホストで次のコマンドを実行します。

sudo systemctl status mongod
3

TLS が有効になってすべてのノードが正常に再起動したら、各ノードの構成ファイルを更新します。すべてのクライアントとノードの暗号化された接続を強制するには、net.tls.modeallowTLS から requireTLS に変更します。

net:
tls:
mode: requireTLS
4

新しい TLS 構成を適用するには、mongod プロセスを再起動します。ダウンタイムなしで構成を適用するには、ノードをローリング方式で再起動します。

配置の各ホストで、セカンダリノードから開始し、プライマリノードで終了するまで、次の操作を実行します。

sudo systemctl restart mongod

ローリング再起動が正常に完了したことを確認するには、各ホストで次のコマンドを実行します。

sudo systemctl status mongod
5

ローリング再起動が完了した後、各ノードのログを調査して、TLS が正しく構成されていることを確認します。ログには、mTLS と X.509 認証が正しく構成されていることを確認するため、次のコンテンツを含める必要があります。

"msg":"Successfully authenticated",
"attr": {
"isClusterMember":true,
"mechanism":"MONGODB-X509",
"user":"CN=mongo1.example.com,O=MongoDB,L=New York City,ST=New-York,C=US"
}

レプリカセット内の他の 2 つのノードのそれぞれについても同様のログメッセージが表示されます。例えば、 mongo0 のログを見ると、 mongo1mongo2 について上記と同様のメッセージが表示されます。

クライアント アプリケーションを使用して配置に接続する方法を学ぶには、続けてTLS が有効なレプリカセットに接続するを参照してください。