我试图配置mongoose连接到我的MongoDB 3.0服务器,所有这些都在localhost上。
我的服务器配置文件如下:
systemLog:
destination: file
path: "/var/log/mongodb/mongodb.log"
logAppend: true
storage:
journal:
enabled: true
processManagement:
fork: true
net:
port: 27017
ssl:
mode: requireSSL
#These are generated using my own local CA
PEMKeyFile: "/etc/ssl/mongoServer.pem"
CAFile: "/etc/ssl/rootCA.pem"
setParameter:
enableLocalhostAuthBypass: false
authenticationMechanisms: MONGODB-X509
服务器运行,我可以使用mongo shell连接到,使用以下命令:
mongo -ssl --sslCAFile /etc/ssl/mongoServer.pem --sslPEMKeyFile /etc/ssl/mongoClient.pem
(奇怪的是,出于某种原因,如果我将rootCA.pem用于--sslCAFile,而不是mongoServer.pem,则它不会连接。但那是另一个问题......)
大!
现在,我正在尝试设置一个mongoose客户端来连接到同一台服务器。以下是我使用的配置选项。
var dbConnectString = "mongodb://127.0.0.1:27017/testDb";
var options = {
server: {
socketOptions: {
keepAlive: 1
}
}
};
options.server.ssl = true;
options.server.sslCert = fs.readFileSync("/etc/ssl/mongoClient.pem");
options.server.sslKey = fs.readFileSync("/etc/ssl/mongoClient.pem");
options.server.sslCA = fs.readFileSync("/etc/ssl/mongoServer.pem");
options.server.sslValidate = false;
mongoose.connect(dbConnectString, options);
这不起作用。当我测试它时,我得到"错误:连接关闭"。
我也尝试过使用单独的密钥和crt文件(这些文件被连接起来制作pem文件),他们也不会连接。
我已经阅读了所有这些地方的文档: http://mongoosejs.com/docs/connections.html
http://docs.mongodb.org/manual/reference/connection-string/
http://mongodb.github.io/node-mongodb-native/2.0/tutorials/connecting/
http://docs.mongodb.org/manual/core/authentication/
http://docs.mongodb.org/manual/tutorial/configure-ssl/
http://docs.mongodb.org/manual/reference/configuration-options/
我相信我正确地做到了这一点。但是,我可能不会,因为它不起作用。提出更正,建议或解决方案。谢谢!