このチュートリアルでは、 自己管理型レプリカセットで TLS を構成する方法を説明します。クラスター内 mTLS 509を使用するかどうかに基づいてアプローチを選択します。これは、ノード間の X. 認証を有効にするために必要です。
重要
これらの手順は、自己管理型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
modeをallowTLSに設定すると、TLS 接続は受け入れられますが、必要ではないため、ノードはレプリケーションを中断することなくローリング再起動を完了できます。certificateKeyFileは、ノードの証明書を指定します。構成中の特定のノードの証明書ファイルファイル名を置き換えます。 は、ノードの証明書に署名した CACAFile証明書を指定します。allowConnectionsWithoutCertificatesクライアントは TLS 証明書を提供せずに接続できます。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
modeをallowTLSに設定すると、TLS 接続は受け入れられますが、必要ではないため、ノードはレプリケーションを中断することなくローリング再起動を完了できます。certificateKeyFileは、ノードの証明書を指定します。構成中の特定のノードの証明書ファイルファイル名を置き換えます。 は、ノードの証明書に署名した CACAFile証明書を指定します。allowConnectionsWithoutCertificatesクライアントは TLS 証明書を提供せずに接続できます。では、ノードを通常のクライアントではなくクラスター
net.tls.clusterAuthX509.attributesノードとして識別する X. 証明書属性を指定します。必須の証明書属性については、「509 メンバー X.509 証明書 」を参照してください。clusterAuthModeをx509509に設定すると、ノードは X. 証明書を使用して認証できるようになります。
ログを調べて 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 対応レプリカセットへの接続 」を参照してください。