gpt4 book ai didi

node.js - Mongoose 不向 MongoDB 服务器发送 SSL 证书

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:13 25 4
gpt4 key购买 nike

我在将一些自签名 SSL 证书与 Mongoose 结合使用时遇到问题。让我挂断电话的是,我可以使用普通的 Mongo Node 客户端连接到数据库服务器,但是当我尝试使用与 Mongoose.createConnection 完全相同的配置进行连接时,我收到一条错误消息,内容为“[conn1 ] 当我检查 Mongod 日志时,没有 peer 提供的 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 似乎也能正常工作。

谢谢!

最佳答案

我有同样的问题,但我发现这是因为我在同一个 .pem 文件中 cat 了 key 和证书(如建议的mongodb 文档)。

但它很容易修复,只需在 sslCert:sslKey: 下指定相同的文件,如下所示:

const options = {
server: {
ssl: true,
sslValidate: true,
sslCA: ca,
sslCert: cert,
sslKey: cert
}
}

在我的例子中,没有必要指定 authMechanismauthSource

关于node.js - Mongoose 不向 MongoDB 服务器发送 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43682558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com