このチュートリアルでは、 自己管理型レプリカセットで TLS を構成する方法を説明します。クラスター内 mTLS を使用するかどうかに基づいてアプローチを選択します。これは、ノード間で X.509認証を有効にするために必要です。
重要
These steps apply to self-managed MongoDB deployments. MongoDB Atlas clusters use TLS by default. If you use Cloud Manager or Ops Manager, configure TLS through your deployment management tool.
始める前に
開始する前に、次のものがあることを確認してください。
各ノードに
localhostやmongo0.example.comなどのホスト名が設定されている自己管理型レプリカセット。現在、レプリカセット内のノードに TLS は設定されていません。サーバー証明書の取得チュートリアルに従って取得した各ノードの TLS サーバー証明書(
mongo0.pemなど)。サーバー証明書に署名するための CA 証明書。例:
ca.pem各ノード上の
mongod構成ファイルへのアクセス。Access to
mongosh.
手順
クラスター内 mTLS またはサーバー ノード間の X.509 認証が不要な場合は、この手順に従ってください。
各ノードの構成ファイルを編集する
各ノードで、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 証明書を指定します。allowConnectionsWithoutCertificatesTLS 証明書を提供せずにクライアントが接続できます。clusterAuthModeをkeyFileに設定すると、ノードはキーファイルを使用して認証できるようになります。keyFileは、ノード間の認証に使用するキーファイルを指定します。tlsWithholdClientCertificateは、クラスター内の他のノードに送信接続を行うときに、ノードがサーバー証明書を提示するのを防ぎます。これは必要であり、証明書にclientAuthEKU が含まれていない場合、ノードがクライアント認証にサーバー認証証明書を使用するのを防ぐためです。
この手順に従って、レプリカセットを構成して、ノード間のクラスター内 mTLS と X.509 認証を使用するようにします。
各ノードの構成ファイルを編集する
重要
Your node certificates must include both serverAuth and clientAuth EKU for intra-cluster mTLS. If your certificates do not include clientAuth, see the Public Certificate Authority Policy Changes Affecting mTLS Technical Advisory for alternative configuration options.
各ノードで、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 証明書を指定します。allowConnectionsWithoutCertificatesTLS 証明書を提供せずにクライアントが接続できます。net.tls.clusterAuthX509.attributesは、ノードを通常のクライアントではなく、クラスターのノードとして識別する X.509 証明書属性を指定します。必要な証明書属性については、ノード X.509 証明書 を参照してください。clusterAuthModeをx509に設定すると、ノードは X.509 証明書を使用して認証できるようになります。
ログを調査してTLS構成を確認します
ローリング再起動が完了した後、各ノードのログを調査して、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 のログを見ると、 mongo1 と mongo2 について上記と同様のメッセージが表示されます。
次のステップ
クライアント アプリケーションを使用して配置に接続する方法を学ぶには、続けてTLS が有効なレプリカセットに接続するを参照してください。