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 | |
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:
mongoshverifica se o certificado é da Autoridade de Certificação especificada (--tlsCAFile. Se o certificado não for da CA especificada,mongoshnão conseguirá se conectar.mongoshverifica se o nome do host (especificado na opção--hostou na string de conexão) corresponde aoSAN(ou, seSANnão estiver presente, oCN) no certificado apresentado pelomongodoumongos. SeSANestiver presente, omongoshnão corresponde aoCN. Se o nome do host não corresponder aoSAN(ouCN),mongoshnã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
mongosha ummongodoumongosque exija TLS/SSL, especifique a opção--hostou use uma string de conexão para especificar o nome do host. Todas as outras opções deTLS/SSLdevem 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:
--hoste--tlsCAFilepara 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:
--hoste--tlsCAFilepara validar o certificado do servidor,--tlsCertificateKeyFileopçã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 do --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 , mongosh não tentará validar os certificados do servidor . Isso cria uma vulnerabilidade para certificados mongod e mongos expirados, bem como para processos externos que se fazem passar por instâncias mongod ou mongos válidas. Se você só precisar desabilitar a validação do nome de 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.