解析服务器通过SSL连接到远程数据库

时间:2017-01-03 12:33:45

标签: node.js mongodb ssl parse-platform parse-server

在我启用SSL之前,我一直在本地使用Parse Server而没有任何问题。现在我有一些unauthorized和其他错误阻止我连接到远程数据库。

数据库由NodeChef托管,它们提供了一个sslCAFile,我试图按照建议here添加到我的Parse Server配置中。但是,我仍然无法连接,并在终端中收到以下错误。

  

警告:无法确保用户电子邮件地址的唯一性:错误:   无法获得发行人证书           在错误(本机)           在TLSSocket。 (_tls_wrap.js:1000:38)           在emitNone(events.js:67:13)           在TLSSocket.emit(events.js:166:7)           在TLSSocket._finishInit(_tls_wrap.js:567:8)       错误:未捕获的内部服务器错误。 {[MongoError:无法获得颁发者证书]         名称:'MongoError',         消息:'无法获取颁发者证书'}错误:无法获得颁发者证书           在错误(本机)           在TLSSocket。 (_tls_wrap.js:1000:38)           在emitNone(events.js:67:13)           在TLSSocket.emit(events.js:166:7)           在TLSSocket._finishInit(_tls_wrap.js:567:8)

我的Parse Server配置如下所示:

var api = new ParseServer({
    databaseURI: databaseUri || '',
    databaseOptions: {
        mongos: {
            ssl: true,
            sslValidate: true,
            allowConnectionsWithoutCertificates: true,
            sslCA: [fs.readFileSync('SSLCA.pem')] // cert from nodechef dashboard
        }
    },
    cloud: process.env.CLOUD_CODE_MAIN || __dirname + '/cloud/main.js',
    appId: process.env.APP_ID
})

我尝试在客户端和服务器上将服务器URL更改为HTTPS,并且两者之间的每个组合都无济于事。

非常感谢。

1 个答案:

答案 0 :(得分:0)

问题是我仍然有一个遗留的JavaScript密钥集。如果在Parse Server初始化选项中设置了此可选参数,则它完全拒绝使用新的JS Client进行连接(非常正确),您只需要一个App ID和Initialisation函数。

我可以确认我在连接字符串中使用?ssl=true在NodeChef上连接到我的远程数据库时不需要证书。

虽然尴尬我会留在这里,可能会帮助别人。