【问题标题】:Dumping mongodb error: error dialing cluster0-shard-00-00.fklgt.mongodb.net:27017: SSL errors: SSL routines:ssl3_get_server_certificate:certificate转储 mongodb 错误:拨打 cluster0-shard-00-00.fklgt.mongodb.net:27017 时出错:SSL 错误:SSL 例程:ssl3_get_server_certificate:certificate
【发布时间】:2021-06-22 08:47:29
【问题描述】:

我通常使用这个命令转储我的 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 拨号错误 cluster0-shard-00-00.fklgt.mongodb.net:27017:SSL 错误:SSL 例程:ssl3_get_server_certificate:证书验证失败

知道发生了什么吗?

【问题讨论】:

    标签: mongodb ssl mongoose mongodb-atlas mongodump


    【解决方案1】:

    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
    ---
    

    (这是一个例子,用你的集群测试以获得真正的证书)

    链中编号最高的证书应该是根证书。一旦你有了这个,谷歌搜索CN部分(在我的例子中是“DigiCert SHA2 Secure Server CA”),你应该找到一个下载证书的链接。

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

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

    【讨论】:

    • 谢谢。但是,为什么几天前该命令可以正常工作而没有执行任何操作?
    • 当你说“(这是一个例子,用你的集群测试以获得真正的证书)”。我应该准确更改哪一部分?
    • 我什至无法使用 mongo shell 连接到数据库,因为同样的问题我觉得很奇怪,因为过去一切都很好。
    • MongoDB Atlas 最近更改了他们的证书提供者,因此您的集群可能刚刚获得了由新根签名的新证书。该输出来自 mongodb.com 网站,运行记下的 openssl 命令以获取集群的响应。
    猜你喜欢
    • 2019-09-11
    • 1970-01-01
    • 2012-06-23
    • 2019-04-05
    • 1970-01-01
    • 2015-06-19
    • 2019-11-01
    • 2015-12-02
    相关资源
    最近更新 更多