Mongoose SSL,不接受连接

时间:2015-09-28 23:24:45

标签: node.js mongodb ssl mongoose

因此我花了一些时间来设置一个带有SSL和授权的repl集。但是,我最终设置并工作,并可以通过命令行连接,提供适当的参数。我正在尝试使用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和密钥+证书PEM文件。所以我认为猫鼬客户端也需要这些。我已经尝试了serverreplset个键,但结果相同。我甚至指定了authSource(authDB),即使看起来这不是问题的一部分,这仍然会产生相同的结果。

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

我的mongo shell命令如下:

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

1 个答案:

答案 0 :(得分:2)

mongoDB node driver documentation中未说明,您还必须提供选项{server: {ssl: true}才能通过SSL进行连接。如果不这样做,则忽略其他选项。

但是,如果你深入了解github上的mongoose问题跟踪器,你会找到this,它会完全推荐。