ANNOUNCEMENT: Voyage AI joins MongoDB to power more accurate and trustworthy AI applications on Atlas.
Learn more
Docs Menu

X.509 証明書を使用した自己管理型配置でのクライアントの認証

次の手順では、スタンドアロンの509 インスタンスでのクライアント認証用にmongod X. 証明書認証を設定します。これは、相互 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 証明書は、クライアント証明書の要件を満たしている必要があります。

--tlsAllowInvalidCertificatesまたはnet.tls.allowInvalidCertificates: trueを指定した場合、無効な証明書は TLS 接続を確立するには十分ですが、認証には不十分です。

1

コマンドラインから 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 構成には次のものが必要です。

オプション
ノート

requireTLS を指定します。

クライアントに提示するインスタンスの 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 構成には次のものが必要です。

オプション
ノート

requireTLS を指定します。

クライアントに提示するインスタンスの X.509 証明書を指定します。

インスタンスに提示された証明書を検証する認証局ファイルを指定します。

レプリカセットまたはシャーディングされたクラスターの X.509 認証を設定するには、「 自己管理型MongoDBでのメンバーシップ認証に X. 証明書を使用 」を参照してください。509

2

クライアント証明書を使用して認証するには、まずMongoDBユーザーとしてクライアント証明書から subject の値を $externalデータベースに追加する必要があります。各一意の X.509クライアント証明書は、単一のMongoDBユーザーに対応します。1 つのクライアント証明書を使用して複数のMongoDBユーザーを認証することはできません。

注意

ユーザー名の要件

  1. 次のコマンドを使用して、クライアント証明書から 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-----
  2. ユーザーとしての 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 }
    }
    )

    ロールを有するユーザーを追加する方法の詳細については、「 自己管理型配置でのユーザーとロールの管理」を参照してください。

3

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ファイルを指定します。

mongod インスタンスによって提示された証明書を検証するための認証局ファイルを指定します。

'$external' を指定します。

MONGODB-X509 を指定します。

認証なしで接続し、接続後に db.auth() メソッドを使用して認証することができます。

例えば、mongosh を使用する場合、

  1. mongoshmongod に接続します。

    mongosh --tls --tlsCertificateKeyFile <path to client PEM file> \
    --tlsCAFile <path to root CA PEM file>
    オプション
    ノート

    クライアントの X.509ファイルを指定します。

    mongod または mongos インスタンスによって提示された証明書を検証するための証明局ファイルを指定します。

  2. 認証するには、$external データベースの db.auth() メソッドを使用します。mechanism フィールドには、 "MONGODB-X509" を指定します。

    db.getSiblingDB("$external").auth(
    {
    mechanism: "MONGODB-X509"
    }
    )

レプリカセットまたはシャーディングされたクラスターに X.509 認証を使用するには、「 自己管理型MongoDBでのメンバーシップ認証に X. 証明書を使用 」を参照してください。509