【问题标题】:Can't establish SSL connection to MongoDB from NodeJS program无法从 NodeJS 程序建立到 MongoDB 的 SSL 连接
【发布时间】:2019-06-18 11:29:39
【问题描述】:

我正在尝试使用配置了 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

猫鼬版本:4.13.6

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

【问题讨论】:

  • 你能通过命令行或像 Rabo3T 这样的 GUI 连接到 mongo 吗?因为您指定了证书的私钥,但没有指定实际的证书。我假设您应该同时指定它们 --sslPEMKeyFile--sslCAFile
  • 是的,我可以通过之前提到的 Mongo Compass 进行连接。还尝试使用“--sslCAFile C:/PATH/TO/CERTIFICATE.crt”,结果仍然相同

标签: node.js mongodb ssl


【解决方案1】:

我觉得你应该参考问题Mongoose SSL, connection not accepted

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

【讨论】:

  • 试过了,结果一样
【解决方案2】:

如果您使用私钥和证书启动 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);
}

更多关于Node JS SSL连接的详细解释你可以去here

【讨论】:

    【解决方案3】:

    解决了! 问题是使用 express-session middelware 并尝试使用不正确的连接字符串连接数据库,这是导致问题的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多