【问题标题】:Mongoose SSL, connection not acceptedMongoose SSL,不接受连接
【发布时间】:2015-09-29 07:30:36
【问题描述】:

所以我花了一点时间来设置一个带有 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

【问题讨论】:

    标签: node.js mongodb ssl mongoose


    【解决方案1】:

    mongoDB node driver documentation 中未描述,您还必须提供选项{server: {ssl: true} 才能通过 SSL 连接。如果不这样做,其他选项将被简单地忽略。

    但是,如果您深入研究 github 上的 mongoose 问题跟踪器,您会发现 this,它正是推荐这个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-15
      • 2012-08-25
      • 2012-01-16
      • 2012-11-25
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2012-04-22
      相关资源
      最近更新 更多