MongoDB は、安全な TLS/SSL 接続 で使用するための X.509 証明書認証をサポートしています。シャーディングされたクラスター ノードとレプリカセットノードは、キーファイル を使用する代わりに x.509 証明書を使用してクラスターまたはレプリカセットへの メンバーシップを検証 できます。メンバー認証は内部プロセスです。
注意
MongoDB は、TLS 1.1 + が利用可能なシステムで TLS 1.0暗号化のサポートを無効にします。
内部認証を有効にすると、 自己管理型配置でのロールベースのアクセス制御も有効になります。 配置で接続して操作を実行するには、クライアントは ユーザーとして認証する必要があります。
- 配置にユーザーを追加する手順については、「 自己管理型配置でのユーザーとロールの管理」チュートリアルを参照してください。 
- ユーザー認証に X. 証明書を使用する手順については、「 X. 証明書を使用した自己管理型配置でクライアントの認証 」をご覧ください。509509 
重要
TLS/SSL、PKI(公開鍵暗号基盤)証明書、特に X.509 証明書と証明機関の詳細な説明は、このドキュメントの範囲外になります。このチュートリアルでは、TLS/SSL に関する事前の知識と、有効な X.509 証明書にアクセスできることを前提としています。
メンバー X.509 証明書
注意
有効な X.509 証明書が必要です。
 --tlsAllowInvalidCertificatesまたはnet.tls.allowInvalidCertificates: trueを指定した場合、無効な証明書は TLS 接続を確立するには十分ですが、認証には不十分です。
証明書の要件
ノード証明書を使用して、シャーディングされたクラスターまたはレプリカセットへのメンバーシップを検証します。 メンバー証明書はnet.tls.clusterFileとnet.tls.certificateKeyFileに保存されています。 ノード証明書の要件:
- 単一の認証局 (CA) が、シャーディングされたクラスターまたはレプリカセットのノードすべての x.509 証明書を発行する必要があります。 
- x.509証明書は期限切れであってはなりません。 
- メンバー証明書の - subjectにある識別名(- DN)は、次の属性の少なくとも 1 つに空でない値を指定する必要があります。- 組織 ( - O)
- 組織単位 ( - OU)
- ドメインコンポーネント ( - DC)
 
- マルチクラスター配置では、各クラスターで異なる X. 509ノード証明書を使用する必要があります。 各証明書の - O、- OU、および- DC識別名(DN)フィールドに一意の値が必要です。- 2 つのクラスターが同じ DN 値を持つ証明書を持っている場合、一方のクラスターで侵害されたサーバーは、もう一方のクラスターのノードとして認証できます。 
- 各クラスター ノード証明書には、 - net.tls.clusterFile} 証明書と- net.tls.certificateKeyFile証明書に同一の- O、- OU、および- DCが含まれている必要があります。 これは、- tlsX509ClusterAuthDNOverride値が設定されている場合は、にも適用されます。 Attribute order doesn't matter.- 以下に例を示します。 以下の 2 つの - DNには、- Oと- OUの指定が一致していますが、- DCは指定されていません。- CN=host1,OU=Dept1,O=MongoDB,ST=NY,C=US - C=US, ST=CA, O=MongoDB, OU=Dept1, CN=host2 - 次の例は誤りです。 - DNが一致しないためです。 一方の- DNには- OU仕様が 2 つあり、もう一方の- OU仕様は 1 つだけです。- CN=host1,OU=Dept1,OU=Sales,O=MongoDB - CN=host2,OU=Dept1,O=MongoDB 
- コモンネーム( - CN)またはサブジェクト代替名(- SAN)のいずれかのエントリは、他のクラスター ノードのサーバー ホスト名と一致する必要があります。 MongoDB 4.2 以降では、- SANを比較する際に、MongoDB は DNS 名または IP アドレスのいずれかを比較できます。 以前のバージョンでは MongoDB は DNS 名のみを比較していました。- たとえば、クラスターの証明書には次の - subjectが含まれる可能性があります。- subject= CN=<myhostname1>,OU=Dept1,O=MongoDB,ST=NY,C=US - subject= CN=<myhostname2>,OU=Dept1,O=MongoDB,ST=NY,C=US - subject= CN=<myhostname3>,OU=Dept1,O=MongoDB,ST=NY,C=US 
- certificateKeyFileとして使用される証明書に- extendedKeyUsageが含まれている場合、値には- clientAuth(「TLS Web クライアント認証」)と- serverAuth(「TLS Web サーバー認証」)の両方を含める必要があります。- extendedKeyUsage = clientAuth, serverAuth 
- clusterFileとして使用される証明書に- extendedKeyUsageが含まれている場合、値には- clientAuthが含まれている必要があります。- extendedKeyUsage = clientAuth 
レプリカセット/シャーディングされたクラスターの構成
ローリング アップグレード手順以外では、レプリカセットまたはシャーディングされたクラスターのすべてのコンポーネントは、配置内の他のすべてのコンポーネントに安全に接続できるようにするために、同じ--clusterAuthMode 設定を使用する必要があります。
レプリカセットの配置の場合、これにはレプリカセットのすべてのmongodメンバーが含まれます。
シャーディングされたクラスターの配置の場合、これにはすべてのmongodまたはmongosインスタンスが含まれます。
注意
mongod と mongos は、デフォルトで localhost にバインドされます。配置のノードが異なるホスト上で実行されている場合、またはリモート クライアントを配置に接続する場合は、--bind_ip または net.bindIp を指定する必要があります。
コマンドライン オプション(tls)の使用
注意
このセクションの手順では、 tls設定/オプションを使用します。 非推奨のsslエイリアスの使用手順については、「コマンドライン オプションの使用( ssl )」を参照してください。
MongoDB では常に TLS 1.0 以降をサポートしているため、 tlsの設定/オプションはsslオプションと同じ機能を提供します。
mongod --replSet <name> --tlsMode requireTLS --clusterAuthMode x509 --tlsClusterFile <path to membership certificate and key PEM file> --tlsCertificateKeyFile <path to TLS/SSL certificate and key file> --sslCAFile <path to root CA file> --bind_ip localhost,<hostname(s)|ip address(es)> 
重要
X.509認証を使用するには、--tlsCertificateSelector または --net.tls.certificateSelector を使用している場合を除き、--tlsCAFile または net.tls.CAFile を指定する必要があります。
特定の構成に必要な追加オプション(TLS/SSL など)を含めます。 について
security:    clusterAuthMode: x509 net:    tls:       mode: requireTLS       certificateKeyFile: <path to its TLS/SSL certificate and key file>       CAFile: <path to root CA PEM file to verify received certificate>       clusterFile: <path to its certificate key file for membership authentication>    bindIp: localhost,<hostname(s)|ip address(es)> 
重要
X.509認証を使用するには、--tlsCertificateSelector または --net.tls.certificateSelector を使用している場合を除き、--tlsCAFile または net.tls.CAFile を指定する必要があります。
特定の構成に必要な追加オプション(TLS/SSL など)を含めます。
コマンドライン オプション(ssl)の使用
注意
このセクションの手順では、非推奨のssl設定とオプションを使用します。 tlsエイリアスの使用手順については、「コマンドライン オプションの使用( tls )」を参照してください。
MongoDB では常に TLS 1.0 以降をサポートしているため、 tlsの設定/オプションはsslオプションと同じ機能を提供します。
内部クラスター メンバー認証用に X.509 証明書を指定するには、レプリカセットのメンバーに対する次の例のように、追加の TLS/SSL オプション --clusterAuthMode と --sslClusterFile を追加します。
mongod --replSet <name> --sslMode requireSSL --clusterAuthMode x509 --sslClusterFile <path to membership certificate and key PEM file> --sslPEMKeyFile <path to TLS/SSL certificate and key PEM file> --sslCAFile <path to root CA PEM file> --bind_ip localhost,<hostname(s)|ip address(es)> 
重要
X.509認証を使用するには、--tlsCertificateSelector または --net.tls.certificateSelector を使用している場合を除き、--tlsCAFile または net.tls.CAFile を指定する必要があります。
特定の構成に必要な追加オプション(TLS/SSL など)を含めます。
security:    clusterAuthMode: x509 net:    ssl:       mode: requireSSL       PEMKeyFile: <path to TLS/SSL certificate and key PEM file>       CAFile: <path to root CA PEM file>       clusterFile: <path to X.509 membership certificate and key PEM file>    bindIp: localhost,<hostname(s)|ip address(es)> 
重要
X.509認証を使用するには、--tlsCertificateSelector または --net.tls.certificateSelector を使用している場合を除き、--tlsCAFile または net.tls.CAFile を指定する必要があります。
特定の構成に必要な追加オプション(TLS/SSL など)を含めます。
詳細情報
鍵ファイルによる内部認証から X.509 内部認証にアップグレードするには、「 自己管理型MongoDB を鍵ファイル認証から X. 認証にアップグレードする509 」を参照してください。
異なる を使用して新しい証明書に、証明書のローリングDN アップデートを実行するには、「 自己管理型クラスターの新しい DN を含む X. 証明書のローリング アップデート 」を参照してください。509