NodeJS Mongoose抛出一个错误。"证书链中的自签名证书"

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NodeJS Mongoose抛出一个错误。"证书链中的自签名证书"相关的知识,希望对你有一定的参考价值。

我使用mongoose连接到mongodb,并启用了ssl选项。

我写了以下代码。

var certFileBuf = fs.readFileSync(config.db[name].sslCertPath);
conn[name] = mongoose.createConnection(config.db[name].conn, {
    user: config.db[name].user,
    pwd: config.db[name].pwd,
    server: {
      sslCA: certFileBuf, ssl: true, sslInvalidHostNameAllowed: true, sslValidate: false,
     sslPEMKeyPwd: config.db[name].sslCertPassword
              }
});
conn[name].user = config.db[name].user;
conn[name].pass = config.db[name].pwd;

我得到以下错误信息。

  name: 'MongoError',
  message: 'self signed certificate in certificate chain'
答案

使用ssl连接mongoose和远程数据库。sslValidate: true

这是在自生成证书的情况下使用的。

使用mongoose(带ssl)的简单连接方式。

// create mongo ssl config
const mongoSSL = {
      sslKey: require('fs').readFileSync('../../key.pem'),
      sslCert: require('fs').readFileSync('../../cert.pem'),
      sslValidate: true, // in case of self-generated certificate
};

// connect with remote db with ssl 
mongoose.connect(
        mongodb:// + MONGODB_USERNAME + ':' + MONGODB_PASSWORD + @2.18.4.13:27017/, 
        {useUnifiedTopology: true, useNewUrlParser: true},  
        mongoSSL
);

以上是关于NodeJS Mongoose抛出一个错误。"证书链中的自签名证书"的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Express 和 NodeJS 中针对 Mongoose 错误进行错误处理。

Mongoose GeoJSON 在使用中间件时抛出“MongoError:无法提取地理键”

错误:.find(...) 不是函数 nodejs mongoose

使用Async / await和mongoose

未捕获从 mongoose-promise 回调函数抛出的错误

mongoose mongodb nodejs的bodyparser错误