Eu configurei minha instância mongod com a seguinte configuração:
net:
port: 27017
bindIp: 0.0.0.0
ssl:
mode: requireSSL
PEMKeyFile: /config/mongo.pem
CAFile: /config/ca.pem
allowConnectionsWithoutCertificates: true
security:
authorization: enabled
Posso me conectar a ele perfeitamente com mongosh
:
mongosh --host="<mydomain.com>:27017" --username="root" --db="mydbname" --ssl --authenticationDatabase="admin"
Mas quando tento me conectar mongodump
usando exatamente as mesmas opções...:
mongodump --host="<mydomain.com>:27017" --username="root" --db="mydbname" --ssl --authenticationDatabase="admin"
...Falha com a mensagem Failed: error connecting to db server: no reachable servers
. Verificando os logs do mongod, vejo o seguinte:
{"t":{"$date":"2023-12-08T13:55:30.966+00:00"},"s":"I", "c":"NETWORK", "id":22943, "ctx":"listener","msg":"Connection accepted","attr":{"remote":"<my ip address>","uuid":"41542a35-0815-4fb7-a618-d3ecf6b21a33","connectionId":244,"connectionCount":4}}
{"t":{"$date":"2023-12-08T13:55:30.980+00:00"},"s":"W", "c":"NETWORK", "id":23234, "ctx":"conn244","msg":"No SSL certificate provided by peer"}
{"t":{"$date":"2023-12-08T13:55:30.985+00:00"},"s":"I", "c":"NETWORK", "id":22944, "ctx":"conn244","msg":"Connection ended","attr":{"remote":"<my ip address>","uuid":"41542a35-0815-4fb7-a618-d3ecf6b21a33","connectionId":244,"connectionCount":3}}
Essas três linhas são repetidas várias vezes até que a conexão expire.
Estou me perguntando por que aparece No SSL certificate provided by peer
quando eu configurei allowConnectionsWithoutCertificates
para true
. Obviamente, não parece ser um problema ao usar o mongosh, pois ele se conecta sem problemas.
O parâmetro
CAFile
é inútil na sua configuração, porque você não fornece nenhum certificado de cliente (e é por isso que você precisaallowConnectionsWithoutCertificates: true
). Em vez disso, pode ser exigidomongosh
e/oumongodump
No SSL certificate provided by peer
é apenas um aviso.mongosh
fornece opção--tlsUseSystemCA
que não existe no mongodump. Talvez tente string de conexão :Talvez dê uma olhada em Como funciona a segurança no MongoDB - que é um pouco mais avançado.
Descobri o problema. Foi devido a uma versão desatualizada do
mongodump
.Ao verificar os logs do servidor, vi que na verdade havia uma linha perto do início (que eu havia perdido anteriormente) que era diferente entre as repetidas:
Foi quando fui verificar a versão do mongodump usando
mongodump --version
e obtive a saídaEra de um
mongo-tools
pacote desatualizado, então desinstalei-odpkg -P mongo-tools
(estou usando o sistema operacional Ubuntu 20.04) e segui as instruções em Instalando as ferramentas de banco de dados no Linux para instalar o arquivomongodb-database-tools
.Obviamente as instruções serão diferentes dependendo do sistema operacional/sistema e da versão que você deseja instalar, mas estes foram os comandos para mim:
Depois de obter a versão mais recente do
mongodump
, tudo funciona.