【问题标题】:SSL CA certificate details in hapi-mongodbhapi-mongodb 中的 SSL CA 证书详细信息
【发布时间】:2018-09-26 00:35:57
【问题描述】:

我们不能在 MONGO URI 中指定 ssl 证书、密钥文件、密码详细信息吗?

举例:

mongodb://[username:password@]host1[:port1]][/[database][?cafile][&keyfile][&passphrase]]

我问这个问题是因为我用的是hapi-mongodb

const Hapi = require('hapi');
const Boom = require('boom');
 const launchServer = async function() {
    const dbOpts = {
        url: 'mongodb://localhost:27017/test',
        settings: {
            poolSize: 10
        },
        decorate: true
    };
    const server = Hapi.Server();
    await server.register({
        plugin: require('hapi-mongodb'),
        options: dbOpts
    });
    await server.start();
    console.log(`Server started at ${server.info.uri}`);
};

launchServer().catch((err) => {
    console.error(err);
    process.exit(1);
});

我找不到如何在dbOpts 中添加 SSL 证书详细信息,例如 sslCA, sslKey, sslCert?任何帮助将不胜感激。

【问题讨论】:

    标签: node.js mongodb ssl-certificate hapijs


    【解决方案1】:

    https://github.com/Marsup/hapi-mongodb/blob/7e9cd65/lib/index.js#L38 读作:

    const db = await MongoClient.connect(connectionOptions.url, connectionOptions.settings);
    

    MongoClient.connect 的第二个参数记录在http://mongodb.github.io/node-mongodb-native/2.2/reference/connecting/legacy-connection-settings/#individual-server-level-options

    所以您的 dbOpts 必须类似于

    const dbOpts = {
        url: 'mongodb://localhost:27017/test',
        settings: {
            server: {
                poolSize: 10,
                sslKey:key,
                sslCert:cert
            }                
        },
        decorate: true
    };
    

    【讨论】:

    • 我添加了settings: { poolSize: config.poolSize, sslKey: fs.readFileSync(key), sslCert: fs.readFileSync(cert), sslCA: fs.readFileSync(ca), sslPass: passPhrase },它起作用了。非常感谢亚历克斯!!!!
    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 2013-07-18
    • 2017-04-20
    • 1970-01-01
    • 2012-07-06
    • 2021-09-12
    • 1970-01-01
    相关资源
    最近更新 更多