Не удается установить SSL-соединение с MongoDB из программы NodeJS - PullRequest
0 голосов
/ 24 января 2019

Я пытаюсь подключить экземпляр mongod из программы NodeJS с помощью Mongoose, которая настроена для подключения SSL, но на консоли mongod появляется следующая ошибка: «Ошибка при получении запроса от клиента: SSLHandshakeFailed: сервер настроен на разрешение толькоSSL-соединения. "

Экземпляр mongod запускается следующим образом:

mongod --sslMode requireSSL --sslPEMKeyFile C:/Users/MyUsername/Path/mongodb.pem

Я пытался использовать MongoClient вместо mongoose, но ничего нового не произошло.Это мой кусок кода:

if(envConfig.config.db.tls === true){
     let certFile = [fs.readFileSync("C:/PATH/TO/Key/mongoDB.pem")];
     mongoose.connect("mongodb://localhost:27017/DB_NAME?ssl=true",{
         server:{
             sslValidate: true,
             sslCA: certFile
         }
     });
 }else{
       mongoose.connect(`mongodb://${dbUrl}`,options);
 }

Это не что-то в файле PEM, потому что когда я запускаю mongod, как я написал, и использую SSL-соединение с MongoDB Compass, используя тот же файл PEM из кода - этоработает.

MongoDB версия: 3.6.0

Mongoose версия: 4.13.6

Рад, если кто-то поможет мне, что я делаю неправильно.

Ответы [ 3 ]

0 голосов
/ 27 января 2019

Если вы запускаете демон MongoDB с закрытым ключом и сертификатом

mongod --sslMode requireSSL --sslPEMKeyFile C:/Users/MyUsername/Path/mongodb.pem --sslCAFile C:/Users/MyUsername/Path/mongodb.crt

Вы можете подключиться с Node JS, например

if(envConfig.config.db.tls === true){
 let key = fs.readFileSync("C:/Users/MyUsername/Path/mongodb.pem");
 let crt = fs.readFileSync("C:/Users/MyUsername/Path/mongodb.crt");
 mongoose.connect("mongodb://localhost:27017/DB_NAME?ssl=true",{
     server:{
         "sslValidate" :true
         "sslKey": key,
         "sslCert": crt, // if you have one certificate you can use `sslCert` parameter
     }
 });
}else{
  mongoose.connect(`mongodb://${dbUrl}`,options);
}

Более подробное объяснение SSL-соединения через Node JS вы можете перейти здесь

0 голосов
/ 28 января 2019

Решено! Проблема заключалась в том, чтобы использовать промежуточное программное обеспечение для экспресс-сессии и пытаться соединить БД с неверной строкой соединения, что и вызвало проблему.

0 голосов
/ 24 января 2019

Я думаю, что вы должны обратиться к вопросу Mongoose SSL, соединение не принято

Вы должны указать {server: {ssl: true} параметр, и я думаю, что ваша проблема будет решена

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...