在我启用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,并且两者之间的每个组合都无济于事。
非常感谢。
答案 0 :(得分:0)
问题是我仍然有一个遗留的JavaScript密钥集。如果在Parse Server初始化选项中设置了此可选参数,则它完全拒绝使用新的JS Client进行连接(非常正确),您只需要一个App ID和Initialisation函数。
我可以确认我在连接字符串中使用?ssl=true
在NodeChef上连接到我的远程数据库时不需要证书。
虽然尴尬我会留在这里,可能会帮助别人。