连接到Heroku Postgres时的SSL问题

时间:2020-05-06 21:38:32

标签: postgresql heroku heroku-postgres

我在通过Node的Glitch实例连接到Postgres Heroku爱好dyno时遇到问题。我浏览了类似问题的帖子,但仍然找不到解决方案。我尝试在节点PGSSLMODE="require"中设置环境变量 并运行下面的代码,但我总是遇到相同的错误。谢谢

const pg = require('pg')
const { Client } = require('pg');

pg.defaults.ssl = true
const client = new pg.Client({
  connectionString: process.env.DATABASE_URL,
  ssl: true,
});

client.connect();
UnhandledPromiseRejectionWarning: Error: self signed certificate at TLSSocket.onConnectSecure (_tls_wrap.js:1051:34)

1 个答案:

答案 0 :(得分:0)

您不能将其设置为ssl:true,因为这意味着您正在自行分配自己的证书。由于您使用的是Heroku自己的PostgreSQL数据库,因此您已经具有SSL证书。您需要做的就是确定是否需要或禁用它。

const client = new Client({
  connectionString: process.env.DATABASE_URL,
  sslmode: process.env.NODE_ENV === "production" ? "require" : "disable"
})

我想指出的是,您不必添加sslmode,因为默认情况下它需要ssl证书,但为了安全起见,请添加sslmode。