Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
C ドライバー
/ /

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_TLSCAFILE

tlsCAFile

信頼できると見なされる 1 つの証明機関または複数の証明機関のバンドル。

MONGOC_URI_TLSALLOWINVALIDCERTIFICATES

tlsAllowInvalidCertificates

証明書検証エラー(例: 信頼されていない発行者、期限切れなど)。

MONGOC_URI_TLSALLOWINVALIDHOSTNAMES

tlsAllowInvalidHostnames

証明書のホスト名検証を無視します(例: 有効な証明書を使用しているが、別のホスト名に対して発行された中間者)

MONGOC_URI_TLSINSECURE

tlsInsecure

{true|false} は、安全でない TLS オプションを使用する必要があるかどうかを示します。 現在のところ、これは MONGOC_URI_TLSALLOINIDCERTICATES と MONGOC_URI_TLSALLOINIDHOSTNAMES を意味します。

MONGOC_URI_TLSDISABLECERTIFICATEREVOCATIONCHECK

tlsdisablecertificatelinkingcheck

{true|false} は、失効チェック(CRL / OCSP)を無効にする必要があるかどうかを示します。

MONGOC_URI_TLSDISABLEOCSPENDPOINTCHECK

tlsdisableocspendpointCheck

{true|false} は、OCSP 応答がステープリングされていない場合に OCSP レスポンダー エンドポイントを要求してはなりません。

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

mongoc_ssl_opt_t key
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)(RFC 6960を参照)は、OpenSSL..1 01+ を次の注意事項とともに使用する場合に完全にサポートされています。

  • 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)(RFC 6960を参照)は、次の注釈で部分的にサポートされています。

  • 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)(RFC 6960を参照)は、次の注釈で部分的にサポートされています。

  • 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)(RFC 6960を参照)は、次の注釈で部分的にサポートされています。

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

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

戻る

ガイド

項目一覧