我正在尝试使用配置了SSL连接的Mongoose从NodeJS程序连接Mongod实例,但是在mongod控制台上收到以下错误:“从客户端接收请求时出错:SSLHandshakeFailed:服务器配置为仅允许SSL连接。”
mongod实例启动如下:
awk
我尝试使用MongoClient代替mongoose,但没有任何新变化。 这是我的代码:
mongod --sslMode requireSSL --sslPEMKeyFile C:/Users/MyUsername/Path/mongodb.pem
与PEM文件无关,因为当我按照编写的方式启动mongod并使用与代码中相同的PEM文件与MongoDB Compass进行SSL连接时,它就起作用了。
MongoDB版本:3.6.0
猫鼬版本:4.13.6
很高兴有人能指导我我在做什么错
答案 0 :(得分:1)
我认为您应该参考问题Mongoose SSL, connection not accepted
您应该指定{server: {ssl: true}
参数,我认为您的问题将得到解决
答案 1 :(得分:0)
如果您使用私钥和证书启动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);
}
可以通过here
更详细地解释通过Node JS进行SSL连接。答案 2 :(得分:0)
解决了! 问题是使用Express-Session Middelware并尝试使用错误的连接字符串连接数据库,这就是导致问题的原因。