node.js - 无法从 NodeJS 程序建立到 MongoDB 的 SSL 连接

标签 node.js mongodb ssl

我正在尝试使用配置有 SSL 连接的 Mongoose 从 NodeJS 程序连接一个 mongod 实例,但我在 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 并使用来自代码的相同 PEM 文件与 MongoDB Compass 进行 SSL 连接时 - 它有效。

MongoDB 版本:3.6.0

Mongoose 版本:4.13.6

很高兴有人能指导我我做错了什么。

最佳答案

我认为你应该引用问题Mongoose SSL, connection not accepted

您应该指定 {server: {ssl: true} 参数,我认为您的问题会得到解决

关于node.js - 无法从 NodeJS 程序建立到 MongoDB 的 SSL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54351563/

相关文章:

javascript - 使用javascript对数组进行排序由字母和数字组成

node.js - 如何使用 Node.js SDK v3.5.2 将 PartitionKey 分配给 CosmosDB 查询

javascript - 如何在 ejs 中使用 if 语句?

rmongodb:在查询中使用 $or

具有 native react 的Android WebView显示白屏

perl - SSLeay.so 中 undefined symbol : OpenSSL_add_all_algorithms

node.js - 将参数传递给 package.json 中的 npm 脚本

node.js - Mongoose 中的一对多关系

java - 使用 Java 的 SHA256withDSA X509Certificate 中的错误验证签名算法

node.js - Mongoose:更新时覆盖数组属性