我正在尝试在 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/
有人可以建议我实现这一目标吗?
| 归档时间: |
|
| 查看次数: |
4330 次 |
| 最近记录: |