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

TLS の構成

項目一覧

  • URI オプションによる構成
  • mongoc_ssl_opt_t による構成
  • クライアント認証
  • サーバー証明書の検証
  • サポートされているライブラリ
  • OpenSSL
  • LibreSSL / libtls
  • Windows のネイティブ TLS サポート(セキュア チャネル)
  • macOS / Darwin でのネイティブ TLS サポート(セキュア トランスポート)

URI に tls=trueを含めて TLS を有効にします。

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);

次の URI オプションを使用して、TLS をさらに構成できます。

定数
キー
説明
MONGOC_URI_TLS
tls
{true|false} は、TLS を使用する必要があるかどうかを示します。
MONGOC_URI_TLSCERTIFICATEKEYFILE
tlscertificatekeyfile
PEM 形式の秘密キーへのパス。その公開証明書が末尾に連結されています。
MONGOC_URI_TLSCERTIFICATEKEYFILEPASSWORD
tlsCertificatekeypassword
暗号化された秘密キーのロックを解除するために使用するパスワード(存在する場合)。
MONGOC_URI_TLSC ファイル
tlsCAFile
信頼できると見なされる 1 つの証明機関または複数の証明機関のバンドル。
があります。
tlsAllowInvalidCertificates
証明書検証エラー(例: 信頼されていない発行者、期限切れなど)。
MONGOC_URI_TLSALLOINVALIDHOSTNAMES
tlsAllowInvalidHostnames
証明書のホスト名検証を無視します(例: 有効な証明書を使用しているが、別のホスト名に対して発行された中間者)
MONGOC_URI_TLSINSECURE
tlsInsecure
{true|false} は、安全でない TLS オプションを使用する必要があるかどうかを示します。 現在のところ、これは MONGOC_URI_TLSALLOINIDCERTICATES と MONGOC_URI_TLSALLOINIDHOSTNAMES を意味します。
があります。
tlsdisablecertificatelinkingcheck
{true|false} は、失効チェック(CRL / OCSP)を無効にする必要があるかどうかを示します。
MONGOC_URI_TLSDISABLEOCSPENDPOINTCHECK
tlsdisableocspendpointCheck
{true|false} は、OCSP 応答がステープリングされていない場合に OCSP レスポンダー エンドポイントを要求してはなりません。

あるいは、 mongoc_ssl_opt_t 構造体は、 mongoc_client_set_ssl_opts で TLS を構成するために使用できます または mongoc_client_Pool_set_ssl_opts 。構成可能なオプションのほとんどは、接続string URI を使用して設定できます。

mongoc_ssl_opt_t キー
URI キー
pem_file
tlsClientCertificateKeyFile
pem_pwd
tlsClientCertificateKeyPassword
ca_file
tlsCAFile
weekly_cert_validation
tlsAllowInvalidCertificates
allow_invalid_hostname
tlsAllowInvalidHostnames

除外は、 crl_fileca_dirのみです。 これらは mongoc_ssl_opt_t でのみ設定できます。

TLS を有効にして MongoDB を起動すると、クライアントはデフォルトで、 --tlsCAFileで指定された認証局、またはサーバー上で使用されているネイティブ証明書ストアによって信頼されている認証局によって発行されたクライアント証明書を提供する必要があります。

クライアント証明書を提供するには、URI のtlsCertificateKeyFileを PEM で保護された証明書ファイルに設定します。

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);

MongoDB C ドライバーは、設定された認証局によって発行された、ホスト名の検証、有効期限など、サーバー証明書の有効性を自動的に確認します。

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

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

これらのデフォルトを変更すると、クライアントが中間者攻撃( tlsAllowInvalidHostnamesが設定されている場合)、無効な証明書( tlsAllowInvalidCertificatesが設定されている場合)、証明書が失効する可能性があるドキュメント( tlsDisableOCSPEndpointCheckまたはtlsDisableCertificateRevocationCheckが設定されています)。

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

  • AUTO デフォルトの動作。 システムのネイティブ TLS ライブラリにリンクするか、OpenSSL を見つけてみてください。

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

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

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

  • LIBRESSL LiveSSL の libbs へのリンク。 (libreSSL の互換性のあるlibsl は、 OPENSSLを設定することで にリンクできます)。

  • 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 でフィールド と を使用して上書きできます。

オンライン証明書ステータスプロトコル (OCSP)( RFC6960 を参照 )は、 OpenSSL1 を使用する場合、完全にサポートされています。0 。1 +次の注釈付き。

  • crl_file mongoc_ssl_opt_t で設定されている場合 、およびcrl_file がサーバーの証明書を取り消すと、証明書は失効したと見なされます(証明書に有効なステープリングされた OCSP 応答がある場合でも)

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

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

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

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

  • must-staple 拡張機能( RFC7633 を参照 )は無視されます。次の場合に接続が続行されることがあります:

  • must-staple 証明書には、ステープリングされた応答なしで表示されます(クライアントが OCSP レスポンダから取り消された応答を受信した場合を除く)。

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

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

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

暗号化された PEM ファイル(例: tlsCertificateKeyPasswordの設定)もサポートされていないため、ロードしようとするとエラーが発生します。

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

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

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

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

  • must-staple 拡張機能( RFC7633 を参照 )は無視されます。must-staple 証明書にステープリングされた応答がない場合でも、接続が続行される可能性があります(クライアントが OCSP レスポンダから失効応答を受け取った場合を除く)。

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

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

MongoDB C ドライバーは、Darwin(OS X、macOS、iOS など)のネイティブ TLS ライブラリ(セキュア トランスポート)とそのネイティブの暗号化ライブラリ(Common Crypto、または CC)をサポートしています。

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

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

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

オンライン証明書ステータスプロトコル (OCSP)( RFC6960 を参照 )は、次のメモで部分的にサポートされています。

  • must-staple 拡張機能( RFC7633 を参照 )は無視されます。must-staple 証明書にステープリングされた応答がない場合でも、接続が続行される可能性があります(クライアントが OCSP レスポンダから失効応答を受け取った場合を除く)。

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

戻る

ガイド