Dumping mongodb error: error dialing cluster0-shard-00-00.fklgt.mongodb.net:27017: SSL errors: SSL routines:ssl3_get_server_certificate:certificate

Dumping mongodb error: error dialing cluster0-shard-00-00.fklgt.mongodb.net:27017: SSL errors: SSL routines:ssl3_get_server_certificate:certificate

我通常使用此命令转储我的 mongodb 数据库,它运行良好:

mongodump --uri mongodb+srv://name:password@cluster0.fklgt.mongodb.net/database_name --archive="dump-copy-name" --forceTableScan

但是,我一直在尝试转储不同的数据库,但它一直在记录:

2021-06-21T18:43:39.206+0100 error dialing cluster0-shard-00-00.fklgt.mongodb.net:27017: SSL errors: SSL routines:ssl3_get_server_certificate:certificate verify failed

知道发生了什么事吗?

mongodump 工具并不隐式信任您的系统证书库。您需要将根 CA 证书传递给它,以便它可以验证集群的证书。

要找出哪个证书是根证书,请使用 openssl:

openssl s_client -connect cluster0-shard-00-00.fklgt.mongodb.net:27017

输出应包含一个 certificate chain 部分,例如:

---
Certificate chain
 0 s:/C=US/ST=New York/L=New York/O=MongoDB, Inc./CN=*.mongodb.com
   i:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
 1 s:/C=US/O=DigiCert Inc/CN=DigiCert SHA2 Secure Server CA
   i:/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert Global Root CA
---

(这是一个示例,请使用您的集群进行测试以获取真实证书)

链中编号最高的证书应该是根证书。一旦你有了它,google 用于 CN 部分(在我的例子中是“DigiCert SHA2 Secure Server CA”),你应该找到一个 link 来下载证书。

根应该是此处列出的两个之一:https://docs.atlas.mongodb.com/reference/faq/security/#hard-coded-certificate-authority

获得 .pem 格式的根证书后,使用命令行选项 --sslCAFile=<filename> 将其传递给 mongodump。