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 レスポンダー エンドポイントを要求してはなりません。

Alternatively, the mongoc_ssl_opt_t struct may be used to configure TLS with mongoc_client_set_ssl_opts or mongoc_client_pool_set_ssl_opts. Most of the configurable options can be set using the Connection String URI.

mongoc_ssl_opt_t key
URI キー
pem_file
tlsClientCertificateKeyFile

pem_pwd

tlsClientCertificateKeyPassword

ca_file
tlsCAFile

weekly_cert_validation

tlsAllowInvalidCertificates

allow_invalid_hostname
tlsAllowInvalidHostnames

The only exclusions are crl_file and ca_dir. Those may only be set with 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 でフィールド と を使用して上書きできます。

The Online Certificate Status Protocol (OCSP) (see RFC 6960) is fully supported when using OpenSSL 1.0.1+ with the following notes:

  • When a crl_file is set with mongoc_ssl_opt_t, and the crl_file revokes the server's certificate, the certificate is considered revoked (even if the certificate has a valid stapled OCSP response)

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

When compiled against the Windows native libraries, the crl_file option of a mongoc_ssl_opt_t is not supported, and will issue an error if used.

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

The Online Certificate Status Protocol (OCSP) (see RFC 6960) is partially supported with the following notes:

  • The Must-Staple extension (see RFC 7633) is ignored. Connection may continue if a

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

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

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

When compiled against the Windows native libraries, the ca_dir option of a mongoc_ssl_opt_t is not supported, and will issue an error if used.

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

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

When crl_file is set with mongoc_ssl_opt_t, the driver will import the revocation list to the System Local Machine Root certificate store.

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

The Online Certificate Status Protocol (OCSP) (see RFC 6960) is partially supported with the following notes:

  • The Must-Staple extension (see RFC 7633) is ignored. Connection may continue if a Must-Staple certificate is presented with no stapled response (unless the client receives a revoked response from an OCSP responder).

  • When a crl_file is set with mongoc_ssl_opt_t, and the crl_file revokes the server's certificate, the OCSP response takes precedence. E.g. if the server presents a certificate with a valid stapled OCSP response, the certificate is considered valid even if the crl_file marks it as revoked.

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

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

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

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

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

The Online Certificate Status Protocol (OCSP) (see RFC 6960) is partially supported with the following notes.

  • The Must-Staple extension (see RFC 7633) is ignored. Connection may continue if a Must-Staple certificate is presented with no stapled response (unless the client receives a revoked response from an OCSP responder).

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

戻る

ガイド

項目一覧