如何使用`connect-mongo`为`express-session`连接到TLS / SSL上的`mongos`实例?

时间:2015-07-29 02:25:42

标签: ssl connect-mongo compose.io

我使用https://mega.co.nz/#!ws8XHQyT!2NK5c2IgiO9jXM2AYDjkP-wzsi5Ub_kq7k56XIBYeFQ作为connect-mongo的存储模块,所有工作都运行良好,直到我从ac20a4ed0c586b32e80f2156188cd1a2 c:\boot\bg-BG\bootmgr.exe.mui 4dae40edfa2cc6c4f631f30a237fe6c8 c:\boot\cs-CZ\bootmgr.exe.mui 0eac4b3cf928be35e0f73cfe3e43047c c:\boot\cs-CZ\memtest.exe.mui 切换到新的'MongoDB+' TLS/SSL部署,现在我可以'连接。

我不详细了解他们的架构,但可以在此处找到更多信息: express-session

在这里: Bringing SSL To Compose MongoDB

在这里: Going SSL With Compose MongoDB+

我知道当你连接时,你需要声明Compose.io选项,你的连接代码最终看起来像这样:

mongos

该连接字符串以及这些连接选项可以使用var fs = require('fs'); var session = require('express-session'); var MongoStore = require('connect-mongo')(session); var ca = [fs.readFileSync('./Mongo-Key.pem')]; var url = 'mongodb://MY_MONGO_USER:MY_MONGO_PASS@mongos1.compose.io:12345,mongos2.compose.io:54321/Sessions'; app.use(session({ key : 'SessionKey', secret : 'CATONTHEKEYBOARD', cookie : { path : '/', httpOnly : true, maxAge : null }, store : new MongoStore({ url : url, mongoOptions : { mongos : { ssl : true, sslValidate : true, sslCA : ca, ca : ca, poolSize : 1, reconnectTries : 1 } }, collection : 'sessions', stringify : false }, function(result) { console.log('Connected to sessions db!'); return next(); }) })); 驱动程序。我可以连接并执行所有操作。

但在这种情况下应用它们会产生......没有。它只是挂起。

知道如何生成任何输出以进一步调试吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

好吧,事实证明connect-mongo在更新的版本中删除了第二个参数(我试图用作回调的参数)。所以问题是我的回调从未被调用过。

调整代码如下有用:

var fs = require('fs');
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);

var ca = [fs.readFileSync('./Mongo-Key.pem')];

var url = 'mongodb://MY_MONGO_USER:MY_MONGO_PASS@mongos1.compose.io:12345,mongos2.compose.io:54321/Sessions';

app.use(session({
    key : 'SessionKey',
    secret : 'CATONTHEKEYBOARD',
    cookie : {
        path : '/',
        httpOnly : true,
        maxAge : null
    },
    store : new MongoStore({
        url : url,
        mongoOptions : {
            mongos : {
                ssl : true,
                sslValidate : true,
                sslCA : ca,
                ca : ca, 
                poolSize : 1,
                reconnectTries : 1
            }
        },
        collection : 'sessions',
        stringify : false
    }).on('connected', function(result) {

        console.log('Connected to sessions db!');
        return next();

    })
}));