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