【问题标题】:heroku Postgres - sequelize : no pg_hba.conf entry for hostheroku Postgres - 续集:主机没有 pg_hba.conf 条目
【发布时间】:2020-07-29 23:09:08
【问题描述】:

我正在尝试使用 Heroku 免费的 Postgres 数据库在 Heroku 上托管的 Nodejs 应用程序上运行迁移。

我使用 Sequelize 作为我的 ORM。这是我的生产连接配置。

const dotenv = require('dotenv');

dotenv.config();

module.exports = {
  production: {
    use_env_variable: 'DATABASE_URL',
    dialect: process.env.DIALECT,
    protocol: process.env.DIALECT,
  }
}

当我使用上述配置时,我得到以下错误:no pg_hba.conf entry for host "000.000.000.0", user "yyyyyyyyyyyyyy", database "xxxxxxxxxxxxx", SSL off

但是,当我将以下选项添加到配置时,我收到自签名证书错误。

dialectOptions: {
ssl: true
}

请问,我该如何解决?

【问题讨论】:

    标签: node.js postgresql heroku sequelize.js


    【解决方案1】:

    将您的 dialectOptions 更改为:

    dialectOptions: {
        ssl: {
            rejectUnauthorized: false
        }
    }
    

    【讨论】:

      【解决方案2】:

      正如this related answer 中所解释的,设置rejectUnauthorized: false 是一个坏主意,因为它允许您创建与数据库的非加密连接,从而使您受到 MITM 攻击(中间人攻击) )。

      更好的解决方案是为您的 Postgres 客户端提供您希望它使用的 CA。在我的例子中,它是 AWS RDS 用于北弗吉尼亚地区 (us-east-1) 的 CA。我从this AWS page 下载了 CA,将它放在与我想用来连接数据库的文件相同的目录中,然后将我的配置修改为:

      {
        ...
        dialectOptions: {
          ssl: {
            require: true,
            ca: fs.readFileSync(`${__dirname}/us-east-1-bundle.pem`),
          },
        },
      }
      

      【讨论】:

        猜你喜欢
        • 2020-05-19
        • 2019-04-28
        • 2021-06-11
        • 1970-01-01
        • 2010-11-27
        • 2020-09-15
        • 2015-10-18
        • 2013-10-19
        • 2014-10-27
        相关资源
        最近更新 更多