configurationmongoose使用x509客户端证书连接到mongodb

我想configurationmongoose连接到我的MongoDB 3.0服务器,都在本地主机上。

我的服务器conf文件如下:

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,它不会连接,但这是另一个问题…)

大!

现在,我试图build立一个mongoose客户端连接到同一台服务器。 这里是我正在使用的configuration选项。

 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); 

这不起作用。 当我testing它,我得到“错误:连接closures”。

我也尝试过使用单独的密钥和crt文件(连接在一起来创buildpem文件),而且它们也不会连接。

我已阅读所有这些地方的文档: 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/

我相信我正确地做到了这一点。 但是,我可能不是,因为它不工作。 更正,build议或解决scheme是欣赏。 谢谢!