Dav*_*ien 3 postgresql heroku node.js sequelize.js
我正在尝试使用 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,
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用上述配置时,出现以下错误: no pg_hba.conf entry for host "000.000.000.0", user "yyyyyyyyyyyyyy", database "xxxxxxxxxxxxx", SSL off
但是,当我将以下选项添加到配置中时,出现自签名证书错误。
dialectOptions: {
ssl: true
}
Run Code Online (Sandbox Code Playgroud)
请问,我该如何解决这个问题?
小智 10
将您的方言选项更改为:
dialectOptions: {
ssl: {
rejectUnauthorized: false
}
}
Run Code Online (Sandbox Code Playgroud)
正如此相关答案中所解释的,设置rejectUnauthorized: false是一个坏主意,因为它允许您创建与数据库的非加密连接,因此可能使您遭受 MITM 攻击(中间人攻击)。
更好的解决方案是为您的 Postgres 客户端提供您希望其使用的 CA。就我而言,它是 AWS RDS 在北弗吉尼亚区域 (us-east-1) 使用的 CA。我从此 AWS 页面下载了 CA ,将其放置在与我想要用来连接数据库的文件相同的目录中,然后将我的配置修改为:
{
...
dialectOptions: {
ssl: {
require: true,
ca: fs.readFileSync(`${__dirname}/us-east-1-bundle.pem`),
},
},
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2223 次 |
| 最近记录: |