【发布时间】:2017-09-26 17:04:14
【问题描述】:
我在将某些自签名 SSL 证书与 Mongoose 一起使用时遇到问题。让我挂断电话的是,我可以使用普通的 Mongo Node 客户端很好地连接到数据库服务器,但是当我尝试使用与 Mongoose.createConnection 完全相同的配置进行连接时,我收到一条错误消息,内容为“[conn1 ] 当我检查 Mongod 日志时,没有对等方提供 SSL 证书。
这是我用来连接 MongoClient.connect 的代码(有效):
var MongoClient = require('mongodb').MongoClient
var fs = require('fs')
// Read the certificates
const ca = [fs.readFileSync(process.env.caPath)];
const cert = fs.readFileSync(process.env.certPath);
let urlPath = ["mongodb://", username, ":", password, "@", dburl, ":", port, "/collection?&ssl=true"]
let url = urlPath.join('')
// Connect validating the returned certificates from the server
const options = {
server: {
ssl: true,
sslValidate: true,
sslCA: ca,
sslCert: cert
}
}
MongoClient.connect(url, options, function(err, db) {
do stuff
})
这是使用 Mongoose.createConnection 的代码(不起作用):
const mongoose = require('mongoose');
const fs = require('fs')
let urlPath = ["mongodb://", username, ":", password "@", dburl, ":", port, "/collection?&ssl=true"]
let url = urlPath.join('')
var ca = [fs.readFileSync(process.env.caPath, 'utf8')];
var cert = fs.readFileSync(process.env.certPath, 'utf8');
const options = {
server: {
ssl: true,
sslValidate: true,
sslCA: ca,
sslCert: cert
}
}
const connection = mongoose.createConnection(url, options)
根据Mongoose docs,这看起来是正确的连接方式,更奇怪的是,将服务器选项传递给 Mongoose.connect 似乎也可以。
谢谢!
【问题讨论】:
标签: node.js mongodb ssl mongoose self-signed