问题描述
如何正确配置MongoDB在Ubuntu上使用Letsencrypt SSL?
我已经使用Letsencrypt创建了SSL证书,并通过以下方式将其组合:
cat /etc/letsencrypt/live/example.com/fullchain.pem /etc/letsencrypt/live/example.com/privkey.pem > /etc/ssl/mongo.pem
并设置mongo config像:
net:
port: 27017
bindIp: 0.0.0.0
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongo.pem
但是尝试启动Mongo时出现此错误:
No SSL certificate validation can be performed since no CA file has been provided; please specify an sslCAFile parameter
如何正确设置CAFile? Ubuntu通常不是在自己的文件中使用”CA Path”和一堆不同的根证书吗?我尝试使用CURL CA捆绑包,但是那也不起作用。
我正在使用Mongo v3.0.12和Ubuntu 14.04
最佳思路
您组合了错误的pem文件。您需要将privkey.pem
与cert.pem
结合使用。
cat /etc/letsencrypt/live/example.com/privkey.pem /etc/letsencrypt/live/example.com/cert.pem > /etc/ssl/mongo.pem
对于CAFile,您需要从https://www.identrust.com/certificates/trustid/root-download-x3.html下载IdenTrust DST根CA X3
sudo touch /etc/ssl/ca.crt
sudo chmod 777 /etc/ssl/ca.crt
添加网站证书,添加—– BEGIN CERTIFICATE —–和—– END CERTIFICATE —–行,并确保您以保存文件的新行结尾:
sudo vi /etc/ssl/ca.crt
然后使用以下命令将crt文件转换为pem:
sudo touch /etc/ssl/ca.pem
sudo chmod 777 /etc/ssl/ca.pem
sudo openssl x509 -in /etc/ssl/ca.crt -out /etc/ssl/ca.pem -outform PEM
并与“让我们加密”中的chain.pem
组合为单个文件ca.pem
sudo cat /etc/letsencrypt/live/example.com/chain.pem >> /etc/ssl/ca.pem
要设置CAFile,请遵循以下mongo配置设置:
net:
port: 27017
bindIp: 0.0.0.0
ssl:
mode: requireSSL
PEMKeyFile: /etc/ssl/mongo.pem
CAFile: /etc/ssl/ca.pem
重新启动MongoDB:
sudo systemctl restart mongod
sudo systemctl status mongod
续订Let’s Encrypt证书时不要忘记这一刻,您还需要续订mongo.pem
和ca.pem
。