Docs Menu
Docs Home
/ / /
Rust ドライバー
/ /

TLS の有効化と構成

項目一覧

  • Overview
  • TLS の有効化
  • 証明書の構成
  • クライアントでの証明書の参照
  • 詳細情報
  • API ドキュメント

このガイドでは、 TLS プロトコルを使用して MongoDB 配置への接続を保護する方法を学習できます。 TLS は、アプリケーションと MongoDB 間の通信を保護する暗号化プロトコルです。 TLS を使用するように接続を構成するには、 TLS オプションを有効にし、クライアントを作成するときに検証用の証明書を提供します。

このガイドには、次のセクションが含まれています。

  • TLSを有効にする では、接続で TLS を有効にする方法について説明します。

  • 「証明書の構成」では、TLS を構成するために必要な証明書について説明します。

  • クライアントでの参照証明書では、TLS オプションを構成するための TlsOptions構造体を作成する方法の例が紹介されています。

  • 追加情報では、このガイドで言及されている型とメソッドのリソースとAPIドキュメントへのリンクを提供します

Tip

次のいずれかの方法で、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_hostnamestrueに設定すると証明書の検証が無効になります。

警告

実稼働環境でこれらのオプションのいずれかを指定すると、アプリケーションは安全でなくなり、期限切れの証明書や有効なクライアントインスタンスをみなした外部プロセスに対して脆弱になる可能性があります。

この例では、次のアクションを実行して、TLS 用に構成されたTlsOptionsインスタンスとClientインスタンスを作成します。

  1. PathBufインスタンス内の証明書ファイルパスを参照するための変数を作成します。

  2. TlsOptions構造体をインスタンス化し、 フィールドとca_file_path cert_key_file_pathフィールドを関連するファイルパスに設定します。

  3. TlsOptionsインスタンスをTls列挙型のEnabledバリアントに渡します。

  4. ClientOptions構造体のtlsフィールドを、 TlsOptionsインスタンスを含むTls::Enabledバリアントに設定します。

  5. これらのオプションを使用してClientインスタンスを作成します。

use std::path::PathBuf;
use mongodb::{ options::{ ClientOptions, TlsOptions, Tls }, Client };
#[tokio::main]
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ドキュメントを参照してください。

戻る

ネットワーク圧縮