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次の タブと タブから選択すると、対応するコード サンプルが表示されます。
注意
接続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、tls_certificate_key_file_passwordフィールドを設定して TLS 対応接続を構成します。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 key_password = b"<password for client key>".to_vec(); let tls_opts = TlsOptions::builder() .ca_file_path(ca_file) .cert_key_file_path(key_file) .tls_certificate_key_file_password(key_password) .build(); client_options.tls = Some(Tls::Enabled(tls_opts)); let _client = Client::with_options(client_options)?; Ok(()) }
詳細情報
接続で TLS を有効にする方法の詳細については、次のサーバー マニュアル ドキュメントを参照してください。
API ドキュメント
このガイドで言及されているメソッドや型の詳細については、以下のAPIドキュメントを参照してください。