TLS の有効化と構成
Overview
このガイドでは、 TLS プロトコルを使用して MongoDB 配置への接続を保護する方法を学習できます。 TLS は、アプリケーションと MongoDB 間の通信を保護する暗号化プロトコルです。 TLS を使用するように接続を構成するには、 TLS オプションを有効にし、クライアントを作成するときに検証用の証明書を提供します。
このガイドには、次のセクションが含まれています。
TLSを有効にする では、接続で TLS を有効にする方法について説明します。
「証明書の構成」では、TLS を構成するために必要な証明書について説明します。
クライアントでの参照証明書では、TLS オプションを構成するための
TlsOptions
構造体を作成する方法の例が紹介されています。追加情報では、このガイドで言及されている型とメソッドのリソースとAPIドキュメントへのリンクを提供します
Tip
TLS の詳細については、 Wikipedia の トランスポート層セキュリティ に関するエントリを参照してください。
TLS の有効化
次のいずれかの方法で、MongoDB インスタンスへの接続で TLS を有効にできます。
接続stringで
tls
オプションをtrue
に設定する空の
TlsOptions
構造体を使用してClientOptions
インスタンスのtls
フィールドをTls::Enabled
バリアントに設定し、それらのオプションを使用してClient
をインスタンス化する
Connection StringClientOptions次の タブと タブから選択すると、対応するコード サンプルが表示されます。
let uri = "mongodb://<hostname>:<port>?tls=true" let client = Client::with_uri_str(uri).await?;
let uri = "<connection string>" let mut client_options = ClientOptions::parse(uri).await?; let tls_opts = TlsOptions::builder().build(); client_options.tls = Some(Tls::Enabled(tls_opts)); let client = Client::with_options(client_options)?;
注意
接続stringに mongodb+srv
プレフィックスを含めて DNS SRV レコードを使用する場合、接続では TLS がデフォルトで有効になります。
クライアント オプションの完全なリストについては、 接続オプションのガイドを参照してください。
証明書の構成
TLS 要求を正常に開始するには、アプリケーションが ID を証明するために暗号化証明書を提示する必要があります。 MongoDB 配置に接続するときに TLS を有効にするには、アプリケーションの証明書を PEM(プライバシー拡張メール) ファイルとして保存する必要があります。 PEM ファイル形式は、暗号化証明書のコンテナ形式です。
重要
実稼働環境で使用する場合は、MongoDB の配置に、同一の認証局によって生成および署名された有効な証明書を使用することをお勧めします。 テスト用に、配置は自己署名証明書を使用できます。
次のリストでは、TLS 対応接続を確立するためにクライアントが提示する必要があるコンポーネントを説明します。
TLS コンポーネント | 説明 |
---|---|
認証局(CA) | TLS 接続を行う場合、信頼する 1 つ以上の証明書機関 |
クライアント証明書 | 暗号化されたネットワーク接続を確立するためにアプリケーションの ID をサーバーが確認できるようにするデジタル証明書 |
証明書鍵 | クライアント証明書秘密キー ファイル(多くの場合証明書ファイル自体に含まれます) |
パスフレーズ | プライベートクライアントキーが暗号化されている場合、復号化するためのパスワード |
クライアントでの証明書の参照
クライアントが接続する前にサーバーが証明書を検証できるように、 TlsOptions
構造体で証明書を参照する必要があります。
最初に証明書ファイルパスをPathBuf
タイプに変換する必要があるため、 std::path
モジュールからこのタイプをインポートする必要があります。 TlsOptions
次に、ca_file_path
構造体のビルダ関数を呼び出して、cert_key_file_path
フィールドと フィールドを証明書ファイルパスに設定します。
TlsOptions
インスタンス内で、接続上で TLS を構成するための任意のフィールドを設定できます。 テスト目的 には、allow_invalid_certificates
allow_invalid_hostnames
フィールドと フィールドを設定できます。
allow_invalid_certificates
オプションをtrue
に設定するとホスト名検証が無効になり、 allow_invalid_hostnames
をtrue
に設定すると証明書の検証が無効になります。
警告
実稼働環境でこれらのオプションのいずれかを指定すると、アプリケーションは安全でなくなり、期限切れの証明書や有効なクライアントインスタンスをみなした外部プロセスに対して脆弱になる可能性があります。
例
この例では、次のアクションを実行して、TLS 用に構成されたTlsOptions
インスタンスとClient
インスタンスを作成します。
PathBuf
インスタンス内の証明書ファイルパスを参照するための変数を作成します。TlsOptions
構造体をインスタンス化し、 フィールドとca_file_path
cert_key_file_path
フィールドを関連するファイルパスに設定します。TlsOptions
インスタンスをTls
列挙型のEnabled
バリアントに渡します。ClientOptions
構造体のtls
フィールドを、TlsOptions
インスタンスを含むTls::Enabled
バリアントに設定します。これらのオプションを使用して
Client
インスタンスを作成します。
use std::path::PathBuf; use mongodb::{ options::{ ClientOptions, TlsOptions, Tls }, Client }; async fn main() -> mongodb::error::Result<()> { let uri = "<connection string>"; let mut client_options = ClientOptions::parse(uri).await?; let ca_file = PathBuf::from(r"<path to CA certificate>"); let key_file = PathBuf::from(r"<path to client certificate>"); let tls_opts = TlsOptions::builder().ca_file_path(ca_file).cert_key_file_path(key_file).build(); client_options.tls = Some(Tls::Enabled(tls_opts)); let _client = Client::with_options(client_options)?; Ok(()) }
詳細情報
接続で TLS を有効にする方法の詳細については、次のサーバー マニュアル ドキュメントを参照してください。
API ドキュメント
このガイドで言及されているメソッドや型の詳細については、以下のAPIドキュメントを参照してください。