LetsEncrypt SSL证书验证失败,使用MongoDB [英] LetsEncrypt SSL Certificate Validation Failed with MongoDB

查看:10
本文介绍了LetsEncrypt SSL证书验证失败,使用MongoDB的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

一个小背景...我的证书是由Certbot颁发的LetsEncrypt.org SSL证书。我运行的是NGINX 1.12.2,并且我能够使用https://正确访问我的网站,所以我相信该部分配置正确。我的Web服务器运行的是Ubuntu 16.04和MongoDB 3.6.3。

我已经尝试了许多配置,虽然我可以使用Compass(官方MongoDB图形用户界面)连接到我的MongoDB而不使用SSL选项,但尝试使用SSL连接会导致无法在所提供的主机和端口上连接到MongoDB错误消息。在我的服务器上运行mongo -ssl --sslPEMKeyFile /etc/ssl/mongo.pem会导致以下错误:

MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
2018-06-12T16:51:10.756+0000 E NETWORK  [thread1] SSL peer certificate validation failed: unable to get local issuer certificate
2018-06-12T16:51:10.757+0000 E QUERY    [thread1] Error: socket exception [CONNECT_ERROR] for SSL peer certificate validation failed: unable to get local issuer certificate :
connect@src/mongo/shell/mongo.js:251:13
@(connect):1:6
exception: connect failed

My/var/log/mongodb/mongod.log显示与上述错误对应的内容如下:

2018-06-12T16:51:10.755+0000 I NETWORK  [listener] connection accepted from 127.0.0.1:47792 #8 (2 connections now open)
2018-06-12T16:51:10.757+0000 I NETWORK  [conn8] end connection 127.0.0.1:47792 (1 connection now open)

我的/etc/mongod.conf包含以下内容(我已经注释掉了Cafile参数,因为我读到这个参数目前是可选的[SOURCE:https://stackoverflow.com/a/33926129/2969615];请注意,我在运行openssl verify -CAfile /etc/ca.pem /etc/mongo.pem命令时得到mongo.pem: OK,所以我相信mongo.pem设置正确):

# network interfaces
net:
  port: 27017
  bindIp: 0.0.0.0
  ssl:
    mode: allowSSL
    PEMKeyFile: /etc/ssl/mongo.pem
    # CAFile: /etc/ssl/ca.pem

我已经参考以下内容创建了我的mongo.pem文件:https://serverfault.com/a/878457...我已经尝试了说明中的证书以及https://letsencrypt.org/certificates/上提供的两个X3中间证书,但都无济于事。

如有任何帮助,将非常感谢

推荐答案

来派对很晚,但以防它确实帮助了某人。我在docker内部运行MongoDB,使用来自mongo的官方图像和来自另一个docker图像的指南针。 对于我使用的服务器:

docker run -it --name data.domain.com --network docker_network -v /path/to/ssl:/ssl:ro -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=pass mongo --tlsMode requireTLS --tlsCertificateKeyFile /ssl/fullchain-key.pem --tlsCAFile /etc/ssl/certs/ISRG_Root_X1.pem 
  • fullchain-key.pem为‘cat fullchain.pem Prikey.pem>;fullchain-key.pem’
  • 坞站名称或服务器名称必须与证书名称匹配

我使用的指南针:

服务器也有自己的证书和指南针。

这篇关于LetsEncrypt SSL证书验证失败,使用MongoDB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆