配置mongoose使用x509客户端证书连接到mongodb

时间:2015-03-13 16:50:14

标签: node.js mongodb ssl mongoose x509certificate

我试图配置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/

我相信我正确地做到了这一点。但是,我可能不会,因为它不起作用。提出更正,建议或解决方案。谢谢!

0 个答案:

没有答案