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'

person meallhour    schedule 20.05.2020    source источник


Ответы (1)


Подключите мангуста к удаленной базе данных с помощью ssl, используя: sslValidate: true

Это используется в случае самогенерируемого сертификата.

Более простой способ подключения с использованием мангуста (с 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
);
person Vinit Narayan Jha    schedule 20.05.2020
comment
Я не использую moongoose.connect, вместо этого я использую mongoose.createConnection, можете ли вы обновить свой ответ, используя mongoose.createConnection? - person meallhour; 20.05.2020
comment
Функция mongoose.createConnection() принимает те же аргументы, что и mongoose.connect(), и возвращает новое соединение. mongoose.createConnection('url', параметры); - person Vinit Narayan Jha; 21.05.2020