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

トランスポート層セキュリティ (TLS) の構成

項目一覧

  • Overview
  • TLS の有効化
  • Specify a CA File
  • サーバー証明書の検証
  • サポートされているライブラリ
  • OpenSSL
  • libreSSL /libitls(非推奨)
  • Windows のネイティブ TLS サポート(セキュア チャネル)
  • macOS / Darwin でのネイティブ TLS サポート(セキュア トランスポート)
  • API ドキュメント

このガイドでは、 TLS の使用方法を説明します。 プロトコルを使用して、 MongoDBデプロイへの接続を保護します。

接続に TLS を有効にすると、 Cドライバーは次のアクションを実行します。

  • TLS を使用して MongoDB 配置に接続

  • 配置の証明書を検証します

  • 証明書が配置を認証することを確認する

MongoDBTLS 用の 配置の構成方法については、 マニュアルの「 TLS 構成ガイド MongoDB Server」を参照してください。

注意

TLS/SSL、PKI(公開鍵基盤)証明書、認証局(CA)の詳細な説明は、このドキュメントの範囲外です。 このページでは、TLS/SSL に関する事前の知識と、有効な証明書にアクセスすることを前提としています。

MongoDB インスタンスへの接続で TLS を有効にするには、次の方法があります。

  • 接続 での {0 パラメータの設定tlsstring

  • mongoc_uri_set_option_as_bool() 関数を使用して、MONGOC_URI_TLS 接続オプションを true に設定

mongoc_client_t *client = mongoc_client_new ("mongodb+srv://<db_username>:<db_password>@<hostname>/?tls=true");
// Do database work here
mongoc_client_destroy (client);
mongoc_uri_t *uri = mongoc_uri_new ("mongodb://localhost:27017");
mongoc_uri_set_option_as_bool (uri, MONGOC_URI_TLS, true);
mongoc_client_t *client = mongoc_client_new_from_uri (uri);
// Do database work here
mongoc_client_destroy (client);
mongoc_uri_destroy (uri);

Tip

接続stringに SRV 接続形式を指定する +srv の変更が含まれている場合、接続では TLS はデフォルトで有効になります。

SRV 接続形式の詳細については、 MongoDB Serverのドキュメントの「 SRV 接続形式 」を参照してください。

TLS を有効にしてMongoDBデプロイに接続する場合、配置ではデフォルトで、クライアントが認証局、またはサーバー上で使用されているネイティブ証明書ストアによって信頼されているクライアント証明書を提供する必要があります。

クライアント証明書は、次の方法で提供できます。

  • ルート証明書チェーンを含む .pemファイルに接続文字列の tlscertificatekeyfile パラメータを設定する

  • mongoc_uri_set_option_as_utf8() 関数を使用して、ルート証明書チェーンを含む .pemファイルに MONGOC_URI_TLSCERTIFICATEKEYFILE オプションを設定します

mongoc_client_t *client = mongoc_client_new ("mongodb+srv://<db_username>:<db_password>@<hostname>/?tls=true&tlscertificatekeyfile=/path/to/certs/client-certificate.pem");
// Do database work here
mongoc_client_destroy (client);
mongoc_uri_t *uri = mongoc_uri_new ("mongodb://localhost:27017");
mongoc_uri_set_option_as_bool (uri, MONGOC_URI_TLS, true);
mongoc_uri_set_option_as_utf8 (uri, MONGOC_URI_TLSCERTIFICATEKEYFILE, "/path/to/client-certificate.pem");
mongoc_client_t *client = mongoc_client_new_from_uri (uri);
// Do database work here
mongoc_client_destroy (client);
mongoc_uri_destroy (uri);

MongoDB Cドライバーは、構成された証明機関によって発行されたサーバー証明書の有効性を自動的に検証します。ドライバーはホスト名の検証と失効チェックも実行します。

この動作をオーバーライドするには、ホスト名の検証、OCSP エンドポイント失効チェック、すべての失効チェックを無効にして、無効な証明書を許可します。

この動作は、tlsAllowInvalidHostnamestlsDisableOCSPEndpointChecktlsDisableCertificateRevocationChecktlsAllowInvalidCertificates オプションを使用して制御されます。デフォルトでは、すべてが false に設定されています。

クライアントが次のセキュリティ上のリスクにつながる可能性があるため、これらのデフォルトを変更することは推奨されません。

  • が設定されている場合、中間者はtlsAllowInvalidHostnames を攻撃します

  • tlsAllowInvalidCertificates が設定されている場合、無効な証明書

  • tlsDisableOCSPEndpointCheck または tlsDisableCertificateRevocationCheck が設定されている場合、証明書を失効させる可能性があります

デフォルトでは 、libmongoc はサポートされている TLS ライブラリを検索し、TLS サポートを有効にします。これは、CMK フラグ ENABLE_SSL によって制御されています。このフラグはデフォルトで AUTO に設定されています。このフラグは、次の値を受け入れます。

  • AUTO: システムのネイティブ TLS ライブラリにリンクするか、OpenSSL を検索しようとします。これはデフォルト値です。

  • OPENSSL: OpenSSL(libsl)へのリンク。 OPENSSL_ROOT を使用して任意のインストール パスを指定できます。

  • LIBRESSL (非推奨):libreSSL の libbs へのリンク。 OPENSSL を設定すると、libreSSL の互換性のある libbsl にリンクできます。

  • WINDOWS: Windowsのネイティブ TLS ライブラリであるセキュア チャネルへのリンク。

  • DARWIN: macOS のネイティブ TLS ライブラリであるセキュア トランスポートへのリンク。

  • OFF: TLS サポートを無効にします。

MongoDB Cドライバーは、 Linuxおよび UNIX プラットフォーム(macOS 以外)で OpenSSL を使用します。業界のベストプラクティスと一部の規制では、TLS 1.1 以降の使用が必要であり、少なくとも OpenSSL 1.0.1 が必要です。 OpenSSL のバージョンを確認するには、次のコマンドを使用します。

openssl version

システムの OpenSSL が最新バージョン(少なくとも 1.0.1 )であることを確認するか、次のコマンドを使用して最新バージョンを非システム パスにインストールし、そのバージョンに対して を構築します。

cmake -DOPENSSL_ROOT_DIR=/absolute/path/to/openssl

OpenSSL に対してコンパイルすると、ドライバーはディストリビューションによって構成されたシステムのデフォルトの証明書ストアのロードを試行します。 これは、tlsCAFile URI オプションを設定するか、ca_file ca_dirmongoc_ssl_opt_t でフィールド と を使用して上書きできます。

OpenSSL + を使用する場合、オンライン証明書ステータス プロトコル (OCSP) が完全にサポートされます。ただし、 が1.0.1crl_file mongoc_ssl_opt_t で設定されており、 がサーバーの証明書を取り消すと、証明書にステープリングされたcrl_file OCSP 応答が有効であっても、証明書は失効したと見なされます。

Tip

OCSP の詳細については、 RFC6960 を参照してください。

MongoDB C ドライバーは、 opensslでコンパイルするように構成されている場合に、OpenSSL 互換性チェックを使用して LiveSSL をサポートします。 また、 libresslで構築するように構成された場合、新しいlibtlsライブラリもサポートされます。

LiveSSL でコンパイルされた場合、crl_file mongoc_ssl_opt_t の オプションはサポートされておらず、使用された場合はエラーが発生します。 とtlsDisableOCSPEndpointCheck tlsDisableCertificateRevocationCheckを設定しても効果はありません。

オンライン証明書ステータスプロトコル(OCSP)は、次の注意事項で部分的にサポートされています。

  • must-staple 拡張機能(RFC7633 を参照)は無視されます

  • must-staple 証明書がステープリングされた応答なしで提示され、 OCSP レスポンダーがダウンしても接続は継続されます

  • クライアントが OCSP レスポンダから取り消された応答を受信した場合、接続は継続されません

Tip

OCSP の詳細については、 RFC6960 を参照してください。

MongoDB Cドライバーは、 Windowsのネイティブ TLS ライブラリ(セキュア チャネル、Schannel)とそのネイティブ暗号化ライブラリ(暗号化API: 次の生成、または CNG)をサポートしています。

Windowsネイティブ ライブラリに対してコンパイルされた場合、ca_dir mongoc_ssl_opt_t の オプションはサポートされておらず、使用された場合はエラーが発生します。

tlsCertificateKeyPassword URI オプションを使用して設定された暗号化された PEM ファイルもサポートされていないため、ロードしようとするとエラーが発生します。

tlsCAFile が設定されている場合、ドライバーは提供された 1 つ以上の認証局が発行したサーバー証明書のみを許可します。 tlsCAFile が設定されていない場合、ドライバーは System Local Machine Root 証明書ストアを使用して証明機関を検索し、提供された証明書を確認します。

crl_file mongoc_ssl_opt_t で設定されている場合 の場合、ドライバーは失効リストをSystem Local Machine Root 証明書ストアにインポートします。

tlsDisableOCSPEndpointCheckを設定しても効果はありません。

オンライン証明書ステータスプロトコル(OCSP)は、次の注意事項で部分的にサポートされています。

  • must-staple 拡張機能( RFC7633 を参照)は無視されます。

  • must-staple 証明書がステープリングされた応答なしで提示され、 OCSP レスポンダーがダウンしても接続は継続されます。

  • クライアントが OCSP レスポンダーから取り消し応答を受信した場合、接続は継続されません。

  • crl_file mongoc_ssl_opt_t で設定されており、crl_file によってサーバーの証明書が取り消されている場合は、OCSP 応答が優先されます。例、サーバーが有効なステープリングされた OCSP 応答を含む証明書を提示した場合、crl_file が証明書を失効としてマークしていても、その証明書は有効であると見なされます。

Tip

OCSP の詳細については、 RFC6960 を参照してください。

MongoDB Cドライバーは、Darwin ネイティブ TLS ライブラリとそのネイティブ暗号化ライブラリである Common Crypto の両方をサポートしています。

セキュア トランスポートに対してコンパイルされると、ca_dir crl_filemongoc_ssl_opt_t の オプションと オプションは はサポートされていません。どちらが使用されている場合は、 エラーが発行されます。

tlsCAFile が設定されている場合、ドライバーは提供された認証局によって発行されたサーバー証明書のみを許可します。 tlsCAFile が設定されていない場合、ドライバーはロックされていないキーチェーンの証明機関を使用します。

tlsDisableOCSPEndpointChecktlsDisableCertificateRevocationCheck を設定しても、セキュア トランスポートでコンパイルする場合、効果はありません。

オンライン証明書ステータスプロトコル(OCSP)は、次の注意事項で部分的にサポートされています。

  • must-staple 拡張機能(RFC7633 を参照)は無視されます

  • must-staple 証明書がステープリングされた応答なしで提示され、 OCSP レスポンダーがダウンしても接続は継続されます

  • クライアントが OCSP レスポンダから取り消された応答を受信した場合、接続は継続されません

Tip

OCSP の詳細については、 RFC6960 を参照してください。

このガイドで言及されているオブジェクトと関数の詳細については、次のAPIドキュメントを参照してください。

戻る

接続ターゲットの選択