このチュートリアルでは、 自己管理型レプリカセットで TLS を構成する方法を説明します。クラスター内 mTLS を使用するかどうかに基づいてアプローチを選択します。これは、ノード間で X.509認証を有効にするために必要です。
重要
これらの手順は、自己管理型MongoDB配置に適用されます。 MongoDB Atlasクラスターはデフォルトで TLS を使用します。 Cloud Managerまたは Ops Manager を使用する場合は、配置管理ツールを通じて TLS を構成します。
始める前に
開始する前に、次のものがあることを確認してください。
各ノードに
localhostやmongo0.example.comなどのホスト名が設定されている自己管理型レプリカセット。現在、レプリカセット内のノードに TLS は設定されていません。サーバー証明書の取得チュートリアルに従って取得した各ノードの TLS サーバー証明書(
mongo0.pemなど)。サーバー証明書に署名するための CA 証明書。例:
ca.pem各ノード上の
mongod構成ファイルへのアクセス。
手順
クラスター内 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 認証を使用するようにします。
各ノードの構成ファイルを編集する
重要
ノード証明書には、クラスター内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 証明書を指定します。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 が有効なレプリカセットに接続するを参照してください。