node.js - NodeJS Mongoose 抛出错误:“证书链中的自签名证书”
问题描述
我正在使用 mongoose 连接到启用 ssl 选项的 mongodb
我写了以下代码:
var certFileBuf = fs.readFileSync(config.db[name].sslCertPath);
conn[name] = mongoose.createConnection(config.db[name].conn, {
user: config.db[name].user,
pwd: config.db[name].pwd,
server: {
sslCA: certFileBuf, ssl: true, sslInvalidHostNameAllowed: true, sslValidate: false,
sslPEMKeyPwd: config.db[name].sslCertPassword
}
});
conn[name].user = config.db[name].user;
conn[name].pass = config.db[name].pwd;
我收到以下错误:
name: 'MongoError',
message: 'self signed certificate in certificate chain'
解决方案
使用 ssl 将猫鼬与远程数据库连接起来:sslValidate: true
这用于自生成证书的情况。
使用 mongoose(使用 ssl)进行连接的更简单方法:
// create mongo ssl config
const mongoSSL = {
sslKey: require('fs').readFileSync('../../key.pem'),
sslCert: require('fs').readFileSync('../../cert.pem'),
sslValidate: true, // in case of self-generated certificate
};
// connect with remote db with ssl
mongoose.connect(
mongodb:// + MONGODB_USERNAME + ':' + MONGODB_PASSWORD + @2.18.4.13:27017/,
{useUnifiedTopology: true, useNewUrlParser: true},
mongoSSL
);
推荐阅读
- bash - ldapsearch 查找用户列表
- python - Raspberry上的Rfid rc522长时间停止读取
- python - 如何使用 Selenium/Python 获取 javaScript 生成的链接文本
- python - 如何在 python 脚本中激活 venv
- python - 3D 弯曲通道的最小横截面——Python 中的解决方案?
- excel - 计算是否或任何其他替代方案以使其更快地工作
- python-2.7 - 如何编译可用的python?
- java - 执行结束时,日志会立即全部转储到控制台,而不是实时打印
- java - 如何从 Java 中的 Kotlin 高阶函数正确显示参数的名称
- reactjs - React Native with Redux 问题与 reducer 用于将项目添加到收藏夹