Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Configuração TLS/SSL para clientes

Nesta página

  • MongoDB Shell
  • MongoDB Atlas, MongoDB Cloud Manager e MongoDB Ops Manager
  • MongoDB Drivers
  • Ferramentas do MongoDB

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.

mongosh fornece várias configurações TLS/SSL, incluindo:

Opção TLS
Notas
Habilita a conexão TLS/SSL.

Especifica o arquivo .pem que contém o certificado e a chave de mongosh para apresentar à instância do mongod ou mongos. Essa opção é mutuamente exclusiva com --tlsCertificateSelector

O mongod / mongos registra um aviso na conexão se o certificado x.509 apresentado expirar dentro de 30 dias do horário do sistema host mongod/mongos.

Se o arquivo de chave de certificado do mongosh for criptografado.
Especifica o arquivo de .pem da Autoridade de Certificação (CA) para verificação do certificado apresentado pelo mongod ou pela instância mongos.

Se estiver em execução no Windows ou macOS, use um certificado do armazenamento de certificados do sistema.

Essa opção é mutuamente exclusiva com --tlsCertificateKeyFile.

O mongod / mongos registra um aviso na conexão se o certificado x.509 apresentado expirar dentro de 30 dias do horário do sistema host mongod/mongos.

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 ao SAN (ou, se SAN não estiver presente, o CN) no certificado apresentado pelo mongod ou mongos. Se SAN estiver presente, o mongosh não corresponde ao CN. Se o nome do host não corresponder ao SAN (ou CN), 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 um mongod ou mongos 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 de TLS/SSL devem ser especificadas usando as opções de linha de comando.

Para se conectar a uma instância do mongod ou mongos que exige comunicação criptografada, inicie o mongosh com:

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.

Para se conectar a um mongod ou mongos que exija certificados de cliente assinados pela AC, inicie mongosh com:

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

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.

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.

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:

Os drivers MongoDB suportam comunicação criptografada. Para obter detalhes, consulte:

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.

Dica

Veja também:

Voltar

Configurar mongod e mongos