- Security >
- Encryption >
- TLS/SSL (Transport Encryption) >
- TLS/SSL Configuration for Clients
TLS/SSL Configuration for Clients¶
On this page
Clients must have support for TLS/SSL to connect to a
mongod or a mongos instance that require
TLS/SSL connections.
Note
- The Linux 64-bit legacy x64 binaries of MongoDB do not include support for TLS/SSL.
- Starting in version 4.0, MongoDB disables support for TLS 1.0 encryption on systems where TLS 1.1+ is available. For more details, see Disable TLS 1.0.
Important
A full description of TLS/SSL, PKI (Public Key Infrastructure) certificates, and Certificate Authority is beyond the scope of this document. This page assumes prior knowledge of TLS/SSL as well as access to valid certificates.
mongosh Configuration (Using tls Options)¶
Note
Starting in version 4.2, MongoDB provides tls options that
corresponds to the ssl options. The tls options provide
identical functionality as the ssl options since MongoDB has
always supported TLS 1.0 and later.
The procedures in this section use the tls options. For
procedures using their ssl aliases, see
mongosh Configuration (Using ssl Options).
mongosh provides various TLS/SSL settings,
including:
| TLS Option (New in 4.2) | Notes |
|---|---|
--tls |
Enables TLS/SSL connection. |
--tlsCertificateKeyFile |
Specifies the Changed in version 4.4: |
--tlsCertificateKeyFilePassword |
If mongosh’s certificate key file is encrypted. |
--tlsCAFile |
Specifies the Certificate Authority (CA) .pem file for
verification of the certificate presented by the
mongod or the mongos instance. |
--tlsCertificateSelector |
If running on Windows or macOS, use a certificate from the system certificate store. (New in version 4.0) This option is mutually exclusive with
Changed in version 4.4: |
For a complete list of mongosh’s tls
options, see TLS Options.
For TLS/SSL connections, mongosh validates the
certificate presented by the mongod or
mongos instance:
mongoshverifies that the certificate is from the specified Certificate Authority (--tlsCAFile. If the certificate is not from the specified CA,mongoshwill fail to connect.mongoshverifies that the hostname (specified in--hostoption or the connection string) matches theSAN(or, ifSANis not present, theCN) in the certificate presented by themongodormongos. IfSANis present,mongoshdoes not match against theCN. If the hostname does not match theSAN(orCN),mongoshwill fail to connect.Starting in MongoDB 4.2, when performing comparison of SAN, MongoDB supports comparison of DNS names or IP addresses. In previous versions, MongoDB only supports comparisons of DNS names.
To connect
mongoshto amongodormongosthat requires TLS/SSL, specify the--hostoption or use a connection string to specify the hostname. All otherTLS/SSLoptions must be specified using the command-line options.
Connect to MongoDB Instance Using Encryption (tls Options)¶
Note
The procedure uses the tls options (available starting in
MongoDB 4.2). For procedures using their ssl aliases, see
mongosh Configuration (Using ssl Options).
To connect to a mongod or mongos instance
that requires encrypted communication,
start mongosh with:
--tls--hostand--tlsCAFileto validate the server certificate.
For example, consider a mongod instance running on
hostname.example.com with the following options:
To connect to the instance, start mongosh with
the following options:
mongosh verifies the certificate presented by
the mongod instance against the specified hostname and
the CA file.
Connect to MongoDB Instance that Requires Client Certificates (tls Options)¶
Note
The procedure uses the tls options (available starting in
MongoDB 4.2). For procedures using their ssl aliases, see
mongosh Configuration (Using ssl Options).
To connect to a mongod or mongos that
requires CA-signed client certificates, start mongosh with:
--tls--hostand the--tlsCAFileto validate the server certificate,--tlsCertificateKeyFileoption to specify the client certificate to present to the server.
For example, consider a mongod instance running on
hostname.example.com with the following options:
To connect to the instance, start mongosh with the
following options:
- On Windows and macOS,
You can also use the
--tlsCertificateSelectoroption to specify the client certificate from the system certificate store instead of using--tlsCertificateKeyFile. If the CA file is also in the system certificate store, you can omit the--tlsCAFileoption as well. For example, to use a certificate with theCN(Common Name) ofmyclient.example.netand the CA file from the system certificate store on macOS, startmongoshwith the following options:Although still available,
mongosh--ssl,--sslCAFile,--sslPEMKeyFile, and--sslCertificateSelectoroptions are deprecated as of MongoDB 4.2.
Avoid Use of --tlsAllowInvalidCertificates Option¶
Warning
Although available, avoid using the
--tlsAllowInvalidCertificates option if possible. If the use of
--tlsAllowInvalidCertificates is necessary, only use the option on
systems where intrusion is not possible.
If mongosh runs with the
--tlsAllowInvalidCertificates option, mongosh
will not attempt to validate the server certificates. This
creates a vulnerability to expired mongod and
mongos certificates as well as to foreign processes
posing as valid mongod or mongos
instances. If you only need to disable the validation of the
hostname in the TLS/SSL certificates, see
--tlsAllowInvalidHostnames.
mongosh Configuration (Using ssl Options)¶
mongosh provides various TLS/SSL settings, including:
| SSL Option (Deprecated in 4.2) | Notes |
|---|---|
--ssl |
Enables TLS/SSL connection. |
--sslPEMKeyFile |
Specifies the .pem file that contains
mongosh’s certificate and key to present to
the mongod or mongos instance. |
--sslPEMKeyPassword |
If mongosh’s certificate key file is encrypted. |
--sslCAFile |
Specifies the Certificate Authority (CA) .pem file for
verification of the certificate presented by the
mongod or the mongos instance. |
--sslCertificateSelector |
If running on Windows or macOS, use a certificate from the system certificate store. (New in version 4.0) |
For a complete list of ssl
options, see SSL Options.
For TLS/SSL connections, mongosh validates the
certificate presented by the mongod or
mongos instance:
mongoshverifies that the certificate is from the specified Certificate Authority--sslCAFile. If the certificate is not from the specified CA,mongoshwill fail to connect.mongoshverifies that the hostname (specified in--hostoption or the connection string) matches theSAN(or, ifSANis not present, theCN) in the certificate presented by themongodormongos. IfSANis present,mongoshdoes not match against theCN. If the hostname does not match theSAN(orCN),mongoshwill fail to connect.Starting in MongoDB 4.2, when performing comparison of SAN, MongoDB supports comparison of DNS names or IP addresses. In previous versions, MongoDB only supports comparisons of DNS names.
To connect
mongoshto amongodormongosthat requires TLS/SSL, specify the--hostoption or use a connection string to specify the hostname. All otherTLS/SSLoptions must be specified using the command-line options.
Connect to MongoDB Instance Using Encryption (--ssl Options)¶
Note
The procedure uses the ssl options. For procedures using the
tls aliases (available starting in MongoDB 4.2), see
mongosh Configuration (Using tls Options).
To connect to a mongod or mongos instance
that requires encrypted communication,
start mongosh with:
--ssl--hostand--sslCAFileto validate the server certificate.
For example, consider a mongod instance running on
hostname.example.com with the following options:
To connect to the instance, start mongosh with the
following options:
mongosh verifies the certificate presented by
the mongod instance against the specified hostname
and the CA file.
Connect to MongoDB Instance that Requires Client Certificates (ssl Options)¶
Note
The procedure uses the ssl options. For procedures using the
tls aliases (available starting in MongoDB 4.2), see
mongosh Configuration (Using tls Options).
To connect to a mongod or mongos that
requires CA-signed client certificates, start mongosh with:
--ssl--hostand the--sslCAFileto validate the server certificate,--sslPEMKeyFileoption to specify the client certificate to present to the server.
For example, consider a mongod instance running on
hostname.example.com with the following options:
To connect to the instance, start mongosh with the
following options:
- On Windows and macOS,
You can also use the
--sslCertificateSelectoroption to specify the client certificate from the system certificate store instead of using--sslPEMKeyFile. If the CA file is also in the system certificate store, you can omit the--sslCAFileoption as well. For example, to use a certificate with theCN(Common Name) ofmyclient.example.netand the CA file from the system certificate store on macOS, startmongoshwith the following options:
Avoid Use of --sslAllowInvalidCertificates Option¶
Warning
Although available, avoid using the
--sslAllowInvalidCertificates option if possible. If the use of
--sslAllowInvalidCertificates is necessary, only use the option
on systems where intrusion is not possible.
If mongosh (and other
MongoDB Tools) runs with the
--sslAllowInvalidCertificates option,
mongosh (and other
MongoDB Tools) will not attempt to validate
the server certificates. This creates a vulnerability to expired
mongod and mongos certificates as
well as to foreign processes posing as valid
mongod or mongos instances. If you
only need to disable the validation of the hostname in the
TLS/SSL certificates, see --sslAllowInvalidHostnames.
MongoDB Atlas, MongoDB Cloud Manager and MongoDB Ops Manager¶
MongoDB Atlas uses TLS/SSL to encrypt the connections to your databases.
The MongoDB Cloud Manager and Ops Manager Monitoring agents use encrypted communication to gather its statistics. Because the agents already encrypt communications to the MongoDB Cloud Manager/Ops Manager servers, this is just a matter of enabling TLS/SSL support in MongoDB Cloud Manager/Ops Manager on a per host basis.
For more information, see:
MongoDB Drivers¶
The MongoDB Drivers support encrypted communication. See:
MongoDB Tools¶
Various MongoDB utility programs support encrypted communication. These tools include:
mongodumpmongoexportmongofilesmongoimportmongorestoremongostatmongotop
To use encrypted communication with these tools, use the same ssl options as
mongosh. See mongosh Configuration (Using ssl Options).