Docs Menu
Docs Home
/ /
/ / /

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

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

重要

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

始める前に、以下があることを確認してください。

  • 各ノードがホスト名(localhostmongo0.example.com など)を持つ自己管理型レプリカセット。 TLS は現在、レプリカセット内のどのノードでも構成されていません。

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

  • サーバー証明書に署名するための CA 証明書(ca.pem など)。

  • mongod各ノードの 構成ファイルにアクセスします。

  • mongoshへのアクセス権。

サーバーノード間でクラスター内 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
  • modeallowTLS に設定すると、TLS 接続は受け入れられますが、必要ではないため、ノードはレプリケーションを中断することなくローリング再起動を完了できます。

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

  • 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
  • modeallowTLS に設定すると、TLS 接続は受け入れられますが、必要ではないため、ノードはレプリケーションを中断することなくローリング再起動を完了できます。

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

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

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

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

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 対応レプリカセットへの接続 」を参照してください。

戻る

証明書の取得

項目一覧