我使用Let的加密来设置加密的Mongo。但是,除非我提供--CAFile
和--PEMKeyFile
参数,否则我无法连接到数据库。我只是得到了一个神秘的错误。
[timestamp] DBClientCursor::init call() failed
[timestamp] Error: DBClientBase::findN: transport error: example.com:27017 ns: admin.$cmd query: { whatsmyuri: 1 } at src/mongo/shell/mongo.js:148
exception: connect failed
根据this issue on mongodb.org,该错误是由SSL配置引起的。
我使用了Let的加密,其根CA是ISRG Root X1。我通过查看“我的加密”页面验证了我有正确的.pem
文件。基于Jira错误/神秘输出以及除非我向mongo shell提供CA和PemKey参数我无法访问服务器这一事实我很确定没有人信任SSL证书我&# 39;使用。
我用来获取证书的确切程序是here。唯一的区别是我创建了ca.pem
文件,然后将chain.pem
文件连接到其中。如果我以相反的方式做到了,正如教程所描述的那样,它总是无法通过OpenSSL验证命令。
答案 0 :(得分:0)
经过几个小时的尝试,我发现了它:
默认情况下,MongoDB不像大多数Web服务器那样使用单向SSL。相反,它需要来自客户端和服务器的SSL证书。
有一个标志--allowConnectionsWithoutCertificates
,会绕过这个。