【发布时间】: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”,结果仍然相同