TLS の有効化と構成
Overview
このガイドでは、TLS プロトコルを使用して MongoDB 配置への接続を保護する方法を学習できます。 TLS を使用するように接続を構成するには、TLS オプションを有効にし、オプションとしてアプリケーションの config/database.php
ファイルに検証用の証明書を提供します。
Tip
TLS について詳しくは、Wikipedia で トランスポート層セキュリティに関するエントリを参照してください。
TLS の有効化
アプリケーションのconfig/database.php
ファイルでは、次のいずれかの方法で MongoDB 配置への接続で TLS を有効にできます。
接続stringで
tls
オプションをtrue
に設定するmongodb
接続エントリのoptions
プロパティでtls
オプションをtrue
に設定する
Connection StringConnection Options次の タブと タブから選択すると、対応するコード サンプルが表示されます。
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => 'mongodb://<hostname>:<port>/?tls=true', 'database' => 'myDB', ] ]
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => '<connection string>', 'database' => 'myDB', 'options' => [ 'tls' => true, ], ] ]
接続オプションの完全なリストを表示するには、「 接続オプション 」を参照してください。
注意
接続stringに mongodb+srv
プレフィックスを含めて DNS SRV レコードを使用する場合、接続では TLS がデフォルトで有効になります。
証明書の構成
TLS 要求を正常に開始するには、アプリケーションが ID を証明するために暗号化証明書を提示する必要がある場合があります。 接続時に TLS を有効にするには、アプリケーションの証明書が PEM ファイルとして保存されている必要があります。
重要
実稼働環境で使用する場合は、MongoDB の配置に、同一の認証局によって生成および署名された有効な証明書を使用することをお勧めします。 テスト用に、配置は自己署名証明書を使用できます。
次のリストでは、TLS 対応接続を確立するためにクライアントが提示できるコンポーネントを説明します。
TLS コンポーネント | 説明 |
---|---|
認証局(CA) | TLS 接続を行う場合、信頼する 1 つ以上の証明書機関。 このファイルのパスを tlsCAFile オプションに渡すことができます。 |
クライアント証明書 | 暗号化されたネットワーク接続を確立するためにアプリケーションの ID をサーバーが確認できるようにするデジタル証明書。 このファイルのパスを tlsCertificateKeyFile オプションに渡すことができます。 |
証明書鍵 | クライアント証明書秘密キー ファイル。 このキーは、多くの場合、証明書ファイル自体に含まれています。 この項目を指定する必要がある場合は、証明書とキーを 1 つのファイルに連結して、 tlsCertificateKeyFile オプションに渡す必要があります。 |
パスフレーズ | プライベートクライアントキーが暗号化されている場合、復号化するためのパスワード。 このファイルのパスを tlsCertificateKeyFilePassword オプションに渡すことができます。 |
参照証明書
必要な場合は、 mongodb
接続を構成するときに証明書を参照して、クライアントが接続する前にサーバーが証明書を検証できるようにする必要があります。
We recommend that you reference your certificates and set other TLS options in the options
property of your connection configuration instead of in the connection string. これにより、アプリケーションのコードが読みやすくなります。
証明書を参照するには、 options
プロパティで次のオプションを設定します。
tlsCAFile
tlsCertificateKeyFile
tlsCertificateKeyFilePassword
注意
テスト目的では、次のオプションをtrue
に設定して検証を無効にできます。
tlsAllowInvalidCertificates
tlsAllowInvalidHostnames
または、 tlsInsecure
オプションをtrue
に設定して、前述のオプションの両方を暗黙的に設定することもできます。
本番環境でこれらのオプションを指定すると、アプリケーションが安全でなくなる可能性があります。 詳細については、サーバー マニュアルの 「接続オプション」に関する参考資料を参照してください。
次の例では、TLS を有効にして接続を構成します。
'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'dsn' => '<connection string>', 'database' => 'myDB', 'options' => [ 'tls' => true, 'tlsCAFile' => '<path to CA certificate>', 'tlsCertificateKeyFile' => '<path to private client certificate>', 'tlsCertificateKeyFilePassword' => '<path to client key passphrase>', ] ] ]
詳細情報
URI オプション設定の詳細については、 MongoDB\\Driver\\Manager::__construct() APIドキュメントを参照してください。
接続で TLS を有効にする方法の詳細については、次のサーバー マニュアル ドキュメントを参照してください。