MongoDB - SSL连接问题

时间:2017-06-22 11:08:07

标签: node.js mongodb ssl

操作系统版本 - ubuntu 12.04
MongoDB版本 - 3.2.5
猫鼬版 - 4.10.8
生成SSL证书的步骤:
1. openssl req -newkey rsa:2048 -new -x509 -days 3650 -nodes -out mongodb-cert.crt -keyout mongodb-cert.key
2. cat mongodb-cert.key mongodb-cert.crt> mongodb.pem

启动mongo服务器
mongo.conf

net:  
  port: 10023  
  bindIp: 10.x.x.x   
  ssl:  
    mode: allowSSL  
    PEMKeyFile: /etc/ssl/mongodb.pem  
    CAFile: /etc/ssl/mongodb-cert.crt

当我通过mongo客户端连接时这很好用 mongo --ssl --host 10.x.x.x --port 10023 --sslCAFile mongodb-cert.crt --sslPEMKeyFile mongodb.pem

但是它会导致mongoose错误

    var mongoose = require('mongoose');   
    var fs = require('fs');   
    var ca = fs.readFileSync("./mongodb-cert.crt");   
    var key = fs.readFileSync("./mongodb.pem");   
    var cert = fs.readFileSync("./mongodb-cert.crt");   
    mongoose.connect('mongodb://10.x.x.x:10023' + '/' + 'DBName' + '?ssl=true',  
    {
        server: {
            sslValidate: true,
            sslCa: ca,
            sslKey: key,
            sslCert: cert
        }
    }
);

{name:'MongoError',message:'self signed certificate'}

1 个答案:

答案 0 :(得分:0)

我猜你已经使用了https://docs.mongodb.com/manual/tutorial/configure-x509-client-authentication中的程序 - 我最好的猜测是你在使用自签名证书时不应该指定sslCA参数。

仅当您引用颁发sslCA中指定的证书的证书颁发机构时,才应使用

sslCert