首页 > 解决方案 > SSL 对等证书验证失败:无法在 MongoDB 中获取本地颁发者证书

问题描述

我正在尝试在 MongoDB 中配置 SSL 证书。为此,我使用 freenom(online) 获取了 myapptest.tk 之类的示例域名,并使用 sslforfree(online) 为该域名生成了证书。在 /etc/hosts 文件中将该域名分配给我的 MongoDB 服务器 IP。之后下载这些证书并在 /etc/mongod.conf 文件中配置它们。

这是我在 mongod.conf 中使用的 SSL 配置

net:
  port: 27017
  bindIp: 0.0.0.0  # Enter 0.0.0.0,:: to bind to all IPv4 and IPv6 
 addresses or, alternatively, use the net.bindIpAll setting.
  ssl:
    mode: requireSSL
    PEMKeyFile: /etc/ssl/mongodb.pem
    CAFile: /etc/ssl/ca_bundle.crt
    allowConnectionsWithoutCertificates: false
    allowInvalidHostnames: false
    disabledProtocols: TLS1_0,TLS1_1

在这里,我将certificate.crt 和private.key 转换为mongodb.pem 并作为PEMKeyFile 的值传递,并将ca_bundle.crt 作为CAFile 的值传递。最后使用命令重启了mongod服务

 sudo service mongod restart

mongodb 服务器运行成功。现在我正在尝试通过命令连接 mongodb 服务器

mongo --ssl --sslPEMKeyFile /etc/ssl/mongodb.pem --sslCAFile /etc/ssl/ca_bundle.crt --host myapptest.tk

我无法连接到服务器。得到像这样的错误

MongoDB shell 版本 v4.0.8

连接到:mongodb://myapptest.tk:27017/?gssapiServiceName=mongodb

2019-04-04T19:57:40.401+0000 E NETWORK [js] SSL 对等证书验证失败:无法获取本地颁发者证书

2019-04-04T19:57:40.402+0000 E QUERY [js] 错误:无法连接到服务器 myapptest.tk:27017,连接尝试失败:SSLHandshakeFailed:SSL 对等证书验证失败:无法获取本地颁发者证书:

连接@src/mongo/shell/mongo.js:343:13

@(连接):2:6

异常:连接失败

如果我使用带有--sslAllowInvalidCertificates类似选项的 mongo 命令

mongo --ssl --sslAllowInvalidCertificates

我可以连接到 mongodb 服务器,否则,我无法连接到服务器。

在 mongod.conf 文件中配置 SSL 证书有什么问题?

我想要的是,我们可以使用--sslCAFile 与 MongoDB 服务器连接吗?

如何在 mongodb 中生成 *.pem 格式的 --sslPEMKeyfile 和 --sslCAFile?

以下是我关注的链接:

https://docs.mongodb.com/manual/tutorial/configure-ssl/

有人可以建议我实现这一目标吗?

标签: mongodb

解决方案


推荐阅读