SSL 对等证书验证失败:无法在 MongoDB 中获取本地颁发者证书

Gay*_*riB 5 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
Run Code Online (Sandbox Code Playgroud)

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

 sudo service mongod restart
Run Code Online (Sandbox Code Playgroud)

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

mongo --ssl --sslPEMKeyFile /etc/ssl/mongodb.pem --sslCAFile /etc/ssl/ca_bundle.crt --host myapptest.tk
Run Code Online (Sandbox Code Playgroud)

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

MongoDB 外壳版本 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 对等证书验证失败:无法获得本地颁发者证书:

connect@src/mongo/shell/mongo.js:343:13

@(连接):2:6

异常:连接失败

如果我将 mongo 命令与--sslAllowInvalidCertificates类似的选项一起使用

mongo --ssl --sslAllowInvalidCertificates
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

以下是我遵循的链接:

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

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