首页 > 解决方案 > NodeJS Mongoose 抛出错误:“证书链中的自签名证书”

问题描述

我正在使用 mongoose 连接到启用 ssl 选项的 mongodb

我写了以下代码:

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'

标签: node.jsmongodbsslmongoosemongoose-schema

解决方案


使用 ssl 将猫鼬与远程数据库连接起来: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
);

推荐阅读