次の手順では、スタンドアロンの509 インスタンスでのクライアント認証用に X.mongod 証明書認証を設定します。これは、相互 TLS または mTLS とも呼ばれます。
レプリカセットまたはシャーディングされたクラスターに X.509 認証を使用するには、「 自己管理型MongoDBでのメンバーシップ認証に X. 証明書を使用 」を参照してください。509
前提条件
TLS/SSL、PKI(公開鍵暗号基盤)証明書、特に X.509 証明書と証明機関の詳細な説明は、このドキュメントの範囲外になります。このチュートリアルでは、TLS/SSL に関する事前の知識と、有効な X.509 証明書にアクセスできることを前提としています。
認証局
実稼働環境で使用する場合、MongoDB の配置には、認証局によって生成および署名された有効な証明書を使用する必要があります。ユーザーまたは組織は、独立した認証局を作成して維持することも、サードパーティの TLS ベンダーによって生成された証明書を使用することもできます。証明書の取得と管理については、このドキュメントの範囲外です。
X.509認証を使用するには、--tlsCertificateSelector または --net.tls.certificateSelector を使用している場合を除き、--tlsCAFile または net.tls.CAFile を指定する必要があります。
クライアント X.509 証明書
有効な X.509 証明書が必要です。クライアントX.509 証明書は、クライアント証明書の要件を満たしている必要があります。
--tlsAllowInvalidCertificatesまたはnet.tls.allowInvalidCertificates: trueを指定した場合、無効な証明書は TLS 接続を確立するには十分ですが、認証には不十分です。
手順
X.509 認証を使用したデプロイ
コマンドラインから X.509認証用の mongod インスタンスを構成できます。
スタンドアロン mongod インスタンスを設定するには、次のコマンドを実行します。
mongod --tlsMode requireTLS \     --tlsCertificateKeyFile <path to TLS/SSL certificate and key PEM file> \     --tlsCAFile <path to root CA PEM file> --bind_ip <hostnames> 
構成に必要な追加オプションを含めます。
X.509 構成には次のものが必要です。
| オプション | ノート | 
|---|---|
| 
 | |
| クライアントに提示するインスタンスの X.509 証明書を指定します。 | |
| インスタンスに提示された証明書を検証する認証局ファイルを指定します。 | 
構成ファイル 内で x.509 認証用に mongod を構成できます。
スタンドアロンの mongod インスタンスを構成するには、構成ファイルに次の設定オプションを追加します。
net:    tls:       mode: requireTLS       certificateKeyFile: <path to TLS/SSL certificate and key PEM file>       CAFile: <path to root CA PEM file> 
構成に必要な追加オプションを含めます。
X.509 構成には次のものが必要です。
| オプション | ノート | 
|---|---|
| 
 | |
| クライアントに提示するインスタンスの X.509 証明書を指定します。 | |
| インスタンスに提示された証明書を検証する認証局ファイルを指定します。 | 
レプリカセットまたはシャーディングされたクラスターの X.509 認証を設定するには、「 自己管理型MongoDBでのメンバーシップ認証に X. 証明書を使用 」を参照してください。509
X.509 証明書 subject をユーザーとして追加する
クライアント証明書を使用して認証するには、まずMongoDBユーザーとしてクライアント証明書から subject の値を $externalデータベースに追加する必要があります。各一意の X.509クライアント証明書は、単一のMongoDBユーザーに対応します。1 つのクライアント証明書を使用して複数のMongoDBユーザーを認証することはできません。
注意
ユーザー名の要件
- $external認証ユーザー(Kerberos、LDAP、または X.509 ユーザー)でクライアント セッションと因果整合性の保証を使用するには、ユーザー名を 10 k バイトより大きくすることはできません。
- subjectstring 内の RDN は、RFC2253 標準と互換性がある必要があります。
- 次のコマンドを使用して、クライアント証明書から - RFC2253形式の- subjectを検索できます。- openssl x509 -in <pathToClientPEM> -inform PEM -subject -nameopt RFC2253 - このコマンドは、 - subject文字列と証明書を返します。- subject= CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry - -----BEGIN CERTIFICATE----- - # ... - -----END CERTIFICATE----- 
- ユーザーとしての - subjectの対応値である- RFC2253を追加します。必要に応じてスペースを省略します。- 次の例では、ユーザーを追加し、そのユーザーに - testデータベース内での- readWriteロールと- userAdminAnyDatabaseロールを付与します。- db.getSiblingDB("$external").runCommand( - { - createUser: "CN=myName,OU=myOrgUnit,O=myOrg,L=myLocality,ST=myState,C=myCountry", - roles: [ - { role: "readWrite", db: "test" }, - { role: "userAdminAnyDatabase", db: "admin" } - ], - writeConcern: { w: "majority" , wtimeout: 5000 } - } - ) - ロールを有するユーザーを追加する方法の詳細については、「 自己管理型配置でのユーザーとロールの管理」を参照してください。 
X.509 証明書での認証
X.509クライアント証明書対象者に対応するMongoDBユーザーとして追加 したら、クライアント証明書を使用して認証できます。
接続中に認証するには、次のコマンドを実行します。
mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \     --tlsCAFile <path to root CA PEM file> \     --authenticationDatabase '$external' \     --authenticationMechanism MONGODB-X509 
| オプション | ノート | 
|---|---|
| クライアントの X.509ファイルを指定します。 | |
| 
 | |
| 
 | |
| 
 | 
認証なしで接続し、接続後に db.auth() メソッドを使用して認証することができます。
例えば、mongosh を使用する場合、
- mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \ - --tlsCAFile <path to root CA PEM file> オプションノート- クライアントの X.509ファイルを指定します。 
- 認証するには、 - $externalデータベースの- db.auth()メソッドを使用します。- mechanismフィールドには、- "MONGODB-X509"を指定します。- db.getSiblingDB("$external").auth( - { - mechanism: "MONGODB-X509" - } - ) 
次のステップ
レプリカセットまたはシャーディングされたクラスターに X.509 認証を使用するには、「 自己管理型MongoDBでのメンバーシップ認証に X. 証明書を使用 」を参照してください。509