mongooseSSL,连接不被接受

所以我花了一点时间来设置SSL和授权的repl集。 但是,我已经build立并最终工作,并可以通过命令行连接提供适当的参数。 我试图用mongoose做同样的事情,但是我不断收到mongodb日志中的错误,如下所示: AssertionException handling request, closing client connection: 17189 The server is configured to only allow SSL connections即使我指定所有ssl选项。

我的代码如下:

 var m = require('mongoose'); var key = fs.readFileSync('/home/node/mongodb/mongodb.pem'); var ca = [fs.readFileSync('/home/node/mongodb/ca.pem')]; var o = { server: { sslValidate:true, sslCA: ca, sslKey: key, sslCert:key }, user: '****', pass: '****' }; m.connect('mongodb://dbAddr/dbName', o) 

我已经尝试设置sslValidate为false ,同样的问题。 我已经尝试了没有CA,证书和/或密钥在多个组合。 当我通过命令行连接时,需要我提供CA和key + cert PEM文件。 所以我觉得mongoose的客户也需要这些。 我已经尝试了serverreplset键具有相同的确切结果。 我甚至指定authSource(authDB),尽pipe看起来这不是问题的一部分,但这仍然会产生相同的结果。

我真的很困惑,特别是因为我没有问题通过mongo命令做同样的事情。

我的mongo shell命令如下:

 mongo --host db1 --ssl --sslPEMKeyFile /etc/mongodb/mongodb.pem --sslCAFile /etc/mongodb/ca.pem -u *** -p *** --authenticationDatabase dbName 

未在mongoDB节点驱动程序文档中描述 ,您还必须提供选项{server: {ssl: true}才能通过SSL进行连接。 如果你不这样做,其他选项很容易被忽略。

但是,如果您在github上挖掘mongoose问题跟踪器,您会发现这一点 ,这正是推荐。