TLS/SSL 接続 を必要とする mongodまたはmongosインスタンスに接続するには、クライアントが TLS/SSL をサポートしている必要があります。
注意
MongoDB の Linux 64 ビット レガシー x64 バイナリには、TLS/SSL のサポートは含まれていません。
MongoDB は、TLS 1.1 + が利用可能なシステムで TLS 1.0暗号化のサポートを無効にします。
重要
TLS/SSL、PKI(公開キー基盤)証明書、認証局についての詳細な説明は、このドキュメントの範囲外です。このページでは、TLS/SSL に関する予備知識があり、有効な証明書にアクセスすることを前提としています。
MongoDB Shell
mongosh 次のようなさまざまな TLS/SSL 設定に対応しています。
TLS オプション | ノート |
|---|---|
TLS/SSL 接続を有効にします。 | |
| |
Windows または macOS で実行している場合は、システム証明書ストアの証明書を使用します。 このオプションは
|
mongoshのtlsオプションの完全なリストについては、 TLS オプションを参照してください。
TLS/SSL 接続の場合、 mongoshはmongodまたはmongosインスタンスによって提示された証明書を検証します。
mongoshは、証明書が指定された証明機関(--tlsCAFileからのものであることを確認します。 証明書が指定された CA からのものでない場合、mongoshは接続に失敗します。mongoshは、ホスト名(--hostオプションまたは接続stringで指定)が、mongodによって提示された証明書のSAN(SANが存在しない場合はCN)と一致することを確認します。またはmongos。SANが存在する場合、mongoshはCNと一致しません。 ホスト名がSAN(またはCN)と一致しない場合、mongoshは接続に失敗します。MongoDB 4.2 以降、SAN の比較を行なう際に、MongoDB は DNS 名または IP アドレスの比較をサポートします。以前のバージョンでは、 MongoDB は DNS 名の比較のみをサポートしていました。
TLS/SSL を必要とする
mongodまたはmongosにmongoshを接続するには、--hostオプションを指定するか、接続stringを使用してホスト名を指定します。 その他のTLS/SSLオプションはすべて、 コマンドライン オプションを使用して指定する必要があります。
暗号化を使用した MongoDB インスタンスへの接続
暗号化通信 mongodが必要なmongos または インスタンスに接続するには、次のコマンドでmongosh を起動します。
--hostと--tlsCAFileを使用してサーバー証明書を検証します。
たとえば、次のオプションを使用して mongod インスタンスを hostname.example.com で実行する場合を考えます。
mongod --tlsMode requireTLS --tlsCertificateKeyFile <pem>
インスタンスに接続するには、次のオプションを使用してmongoshを起動します。
mongosh --tls --host hostname.example.com --tlsCAFile /etc/ssl/caToValidateServerCertificates.pem
mongoshは、指定されたホスト名と CA ファイルに対してmongodインスタンスによって提示された証明書を検証します。
クライアント証明書を必要とする MongoDB インスタンスへの接続
CA 署名クライアント証明書を必要とするmongodまたはmongosに接続するには、次のコマンドでmongoshを起動します。
サーバー証明書を検証するための
--hostと--tlsCAFile--tlsCertificateKeyFileサーバーに提示するクライアント証明書を指定するオプション。
たとえば、次のオプションを使用して mongod インスタンスを hostname.example.com で実行する場合を考えます。
mongod --tlsMode requireTLS --tlsCertificateKeyFile /etc/ssl/mongodb.pem --tlsCAFile /etc/ssl/caToValidateClientCertificates.pem
インスタンスに接続するには、次のオプションを使用してmongoshを起動します。
mongosh --tls --host hostname.example.com --tlsCertificateKeyFile /etc/ssl/client.pem --tlsCAFile /etc/ssl/caToValidateServerCertificates.pem
Windows と macOS
システム証明書ストアからクライアント証明書を指定するには、--tlsCertificateSelector の代わりに--tlsCertificateKeyFile オプションを使用します。
CA ファイルもシステム証明書ストアにある場合は、 --tlsCAFileオプションを省略できます。
たとえば、CN(共通名)が myclient.example.net である証明書とそれに付随する CA ファイルが両方とも macOS システム証明書ストアにある場合、次のように接続できます。
mongosh --tls --host hostname.example.com --tlsCertificateSelector subject="myclient.example.net"
mongosh でも使用可能ですが、代替として tls を使用する必要があります。
--tlsAllowInvalidCertificatesオプションの使用を避ける
警告
--tlsAllowInvalidCertificates オプションは使用可能ですが、可能な限り使用しないでください。--tlsAllowInvalidCertificates の使用が必要な場合は、侵入が不可能なシステムでのみこのオプションを使用してください。
mongoshが--tlsAllowInvalidCertificatesオプションを使用して実行されている場合、 mongoshはサーバー証明書の検証を試行しません。 これにより、期限切れのmongodおよびmongos証明書、および有効なmongodまたはmongosインスタンスを引き受ける外部プロセスに対する脆弱性が生じます。 TLS/SSL 証明書のホスト名の検証を無効にするだけの場合は、 --tlsAllowInvalidHostnamesを参照してください。
MongoDB Atlas、MongoDB Cloud Manager、MongoDB Ops Manager
MongoDB Atlas は TLS/SSL を使用してデータベースへの接続を暗号化します。
MongoDB Cloud Manager および Ops Manager のモニタリング エージェントは、暗号化通信を使用して統計を収集します。エージェントはすでに MongoDB Cloud Manager サーバーおよび Ops Manager サーバーへの通信を暗号化しているため、上記の暗号化は、MongoDB Cloud Manager または Ops Manager におけるホストごとの TLS/SSL サポートの有効化に関与します。
詳細については、以下を参照してください。
MongoDB ドライバー
MongoDB ドライバーは暗号化通信をサポートしています。詳細については、以下を参照してください。
MongoDB ツール
さまざまな MongoDB ユーティリティ プログラムが暗号化通信をサポートしています。これらのツールには、次のものが含まれます。
これらのツールで暗号化通信を使用するには、 mongoshと同じtlsオプションを使用します。 詳しくは、 MongoDB Shell を参照してください。