クライアントの TLS/SSL 設定
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 接続を有効にします。 | |
mongosh の証明書鍵ファイルが暗号化されている場合。 | |
Windows または macOS で実行している場合は、システム証明書ストアの証明書を使用します。 このオプションは が x を表示した場合、 |
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 を参照してください。