Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Conectar a um conjunto de réplicas habilitado para TLS

Este tutorial mostra como conectar mongosh a um conjunto de réplicas autogerenciado habilitado para TLS.

Antes de começar, verifique se você tem o seguinte:

Se você não quiser usar TLS mútuo ou autenticação de cliente X.509, siga este procedimento. Se você definir allowConnectionsWithoutCertificates como true na configuração do servidor, os clientes poderão se conectar sem apresentar um certificado e se autenticar com SCRAM.

1

Conecte mongosh ao seu conjunto de réplicas usando as seguintes opções:

mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \
--tls --tlsCAFile /etc/ssl/mongodb/ca.pem
  • --tls habilita a criptografia TLS para a conexão.

  • --tlsCAFile é definido como o certificado CA que assinou os certificados do servidor para que mongosh possa verificar os certificados do servidor.

A conexão sem um certificado de cliente estabelece uma sessão criptografada por TLS, mas não o autentica. Para executar a maioria dos comandos, você deve autenticar com um mecanismo como SCRAM.

2

Utilize o método db.auth() para autenticar com seu nome de usuário e senha de administrador.

3

Execute o seguinte para confirmar seu estado de autenticação:

db.adminCommand({ connectionStatus: 1 })

Confirme se authInfo.authenticatedUsers inclui o usuário esperado.

Se você quiser usar TLS mútuo e autenticação de cliente X.509 ao se conectar à sua implantação, siga este procedimento para criar e autenticar com um certificado de cliente.

1

Aviso

Não use o mesmo certificado que os nós do servidor. Você deve gerar um novo certificado de cliente para autenticação X.509, mesmo que seus certificados de servidor sejam válidos para autenticação de cliente.

Gere um certificado de cliente usando o processo descrito em Obter certificados de servidor TLS. Faça os seguintes ajustes:

  • No arquivo de configuração, defina extendedKeyUsage = clientAuth em vez de serverAuth.

  • A CA que assinou seus certificados de autenticação de cliente de nó também deve assinar seu certificado de cliente. Geralmente, este é ca.pem. No entanto, se você obteve certificados separados para autenticação de cliente, poderá ter uma CA diferente para certificados de cliente.

  • Nomeie seus arquivos de saída client.key, client.crt e client.pem em vez dos nomes específicos do nó usados no tutorial de certificado.

Após concluir o processo, copie client.pem para uma localização segura na máquina onde você executa mongosh:

cp client.pem /etc/ssl/mongodb/client.pem
2

Identifique o assunto do seu certificado de cliente. Você precisa desse valor para confirmar que autenticou com o certificado de cliente esperado após a conexão.

Para visualizar o assunto, execute o seguinte comando:

openssl x509 -in /etc/ssl/mongodb/client.pem -noout -subject

Observe a saída, que se parece com o seguinte:

subject=C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser

Salve o nome do assunto para usar mais tarde neste tutorial. Neste exemplo, o nome do assunto é C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser.

3

Conecte mongosh ao seu conjunto de réplicas usando as seguintes opções:

mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \
--tls \
--tlsCAFile /etc/ssl/mongodb/ca.pem \
--tlsCertificateKeyFile /etc/ssl/mongodb/client.pem
  • --tls habilita a criptografia TLS para a conexão.

  • --tlsCAFile é definido como o certificado CA que assinou os certificados do servidor para que mongosh possa verificar a conexão do servidor.

  • --tlsCertificateKeyFile apresenta o certificado do cliente e a chave privada que o servidor usa para autenticar sua conexão com X.509.

Isso o conecta à sua implantação do MongoDB por meio de TLS.

4

Utilize o método db.auth() para autenticar com seu nome de usuário e senha de administrador.

5

Crie um usuário no banco de dados $external que corresponda ao nome do assunto do certificado do cliente com o método db.createUser(). Substitua o nome de usuário pelo assunto do seu certificado de cliente que você identificou anteriormente:

db.getSiblingDB("$external").runCommand({
createUser: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser",
roles: [
{ role: "readWriteAnyDatabase", db: "admin" }
]
})

Depois de criar um usuário, use o método db.auth() para autenticar no banco de dados $external usando X.509:

db.getSiblingDB("$external").auth({
mechanism: "MONGODB-X509",
user: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser"
})
6

Execute o seguinte para confirmar seu estado de autenticação:

db.adminCommand({ connectionStatus: 1 })

Confirme se authInfo.authenticatedUsers inclui o usuário esperado.

Depois de concluir este tutorial, mongosh será conectado ao seu conjunto de réplicas por meio de uma conexão TLS criptografada, autenticada com SCRAM ou X.509.