Configuração TLS/SSL para clientes
Nesta página
Os clientes devem ter suporte para TLS/SSL para se conectarem a uma mongod
ou a uma instância mongos
que exija conexões TLS/SSL.
Observação
Os binários Linux 64 bits legado x64 do MongoDB não incluem suporte para TLS/SSL.
O MongoDB desabilita o suporte para criptografia TLS 1.0 em sistemas em que o TLS 1.1+ está disponível.
Importante
Uma descrição completa de certificados TLS/SSL, PKI (Public Key Infrastructure) e autoridade de certificação está além do escopo deste documento. Esta página pressupõe conhecimento prévio de TLS/SSL, bem como acesso a certificados válidos.
MongoDB Shell
mongosh
fornece várias configurações TLS/SSL,
incluindo:
Opção TLS | Notas |
---|---|
Habilita a conexão TLS/SSL. | |
Especifica o arquivo O | |
Se o arquivo de chave de certificado do mongosh for criptografado. | |
Se estiver em execução no Windows ou macOS, use um certificado do armazenamento de certificados do sistema. Essa opção é mutuamente exclusiva com O |
Para obter uma lista completa das opções tls
do mongosh
, consulte Opções de TLS.
Para conexões TLS/SSL, o mongosh
valida o certificado apresentado pela instância do mongod
ou mongos
:
mongosh
verifica se o certificado é da Autoridade de Certificação especificada (--tlsCAFile
. Se o certificado não for da AC especificada,mongosh
não conseguirá se conectar.mongosh
verifica se o nome do host (especificado na opção--host
ou na string de conexão) corresponde aoSAN
(ou, seSAN
não estiver presente, oCN
) no certificado apresentado pelomongod
oumongos
. SeSAN
estiver presente, omongosh
não corresponde aoCN
. Se o nome do host não corresponder aoSAN
(ouCN
),mongosh
não conseguirá se conectar.A partir do MongoDB 4.2, ao realizar a comparação de SAN, o MongoDB oferece suporte à comparação de nomes DNS ou endereços IP. Nas versões anteriores, o MongoDB suporta apenas comparações de nomes DNS.
Para conectar o
mongosh
a ummongod
oumongos
que exija TLS/SSL, especifique a opção--host
ou use uma string de conexão para especificar o nome do host. Todas as outras opções deTLS/SSL
devem ser especificadas usando as opções de linha de comando.
Conecte-se a instâncias do MongoDB usando criptografia
Para se conectar a uma instância do mongod
ou mongos
que exige comunicação criptografada, inicie o mongosh
com:
--host
e--tlsCAFile
para validar o certificado do servidor.
Por exemplo, considere uma instância do mongod
executando no hostname.example.com
com as seguintes opções:
mongod --tlsMode requireTLS --tlsCertificateKeyFile <pem>
Para se conectar à instância, inicie o mongosh
com as seguintes opções:
mongosh --tls --host hostname.example.com --tlsCAFile /etc/ssl/caToValidateServerCertificates.pem
mongosh
verifica o certificado apresentado pela instância do mongod
em relação ao nome de host especificado e no arquivo da AC.
Conecte-se a instâncias do MongoDB que exigem certificados de cliente
Para se conectar a um mongod
ou mongos
que exija certificados de cliente assinados pela AC, inicie mongosh
com:
--host
e--tlsCAFile
para validar o certificado do servidor,--tlsCertificateKeyFile
opção para especificar o certificado do cliente para apresentar ao servidor.
Por exemplo, considere uma instância do mongod
executando no hostname.example.com
com as seguintes opções:
mongod --tlsMode requireTLS --tlsCertificateKeyFile /etc/ssl/mongodb.pem --tlsCAFile /etc/ssl/caToValidateClientCertificates.pem
Para se conectar à instância, inicie o mongosh
com as seguintes opções:
mongosh --tls --host hostname.example.com --tlsCertificateKeyFile /etc/ssl/client.pem --tlsCAFile /etc/ssl/caToValidateServerCertificates.pem
Windows e macOS
Para especificar um certificado de cliente do armazenamento de certificados do sistema, use a opção --tlsCertificateSelector
em vez de --tlsCertificateKeyFile
.
Se o arquivo da AC também estiver no armazenamento de certificados do sistema, você poderá omitir a opção --tlsCAFile
.
Por exemplo, se um certificado com o CN
(Nome comum) de myclient.example.net
e o arquivo CA que o acompanha estão ambos no armazenamento de certificados do sistema macOS, você pode se conectar assim:
mongosh --tls --host hostname.example.com --tlsCertificateSelector subject="myclient.example.net"
Estão disponíveis em mongosh
, mas você deve usar as alternativas tls
em vez disso.
Evite o uso da --tlsAllowInvalidCertificates
opção
Aviso
Embora disponível, evite utilizar a opção --tlsAllowInvalidCertificates
se possível. Se o uso de --tlsAllowInvalidCertificates
for necessário, use a opção somente em sistemas em que a intrusão não seja possível.
Se o mongosh
for executado com a opção --tlsAllowInvalidCertificates
, o mongosh
não tentará validar os certificados do servidor. Isso cria uma vulnerabilidade a certificados do mongod
e mongos
expirados, bem como a processos externos que se fazem passar por instâncias do mongod
ou mongos
válidas. Se você só precisa desativar a validação do nome do host nos certificados TLS/SSL, consulte --tlsAllowInvalidHostnames
.
MongoDB Atlas, MongoDB Cloud Manager e MongoDB Ops Manager
O MongoDB Atlas utiliza TLS/SSL para criptografar as conexões com seus bancos de dados.
Os agentes do MongoDB Cloud Manager e do Ops Manager Monitoring usam comunicação criptografada para reunir suas estatísticas. Porque os agentes já criptografam comunicações para os servidores do MongoDB Cloud Manager/Ops Manager, isso é apenas uma questão de habilitar o suporte a TLS/SSL no MongoDB Cloud Manager/Ops Manager por host.
Para mais informações, veja:
MongoDB Drivers
Os drivers MongoDB suportam comunicação criptografada. Para obter detalhes, consulte:
Ferramentas do MongoDB
Vários programas de utilidade do MongoDB suportam comunicação criptografada. Essas ferramentas incluem:
Para utilizar comunicação criptografada com estas ferramentas, utilize as mesmas opções do tls
que o mongosh
. Consulte MongoDB Shell.