Heroku 运行 sequelize db:migrate 时出现“自签名证书”错误
Posted
技术标签:
【中文标题】Heroku 运行 sequelize db:migrate 时出现“自签名证书”错误【英文标题】:"Self signed certificate" error on Heroku running sequelize db:migrate 【发布时间】:2021-06-29 13:51:36 【问题描述】:我有一个带有 Postgres 数据库的 Node / Express 应用程序,可以在我的本地机器上完美运行,但我很难让它在 Heroku 上运行。问题发生在我推送到成功构建的 Heroku 之后,然后我尝试运行 heroku run sequelize db:migrate
。错误是:
ERROR: self signed certificate
我的设置:
节点 v15.12.0 Postgres 数据库(“Heroku Postgres”插件) pg v8.5.1 续集 v6.6.2 sequelize-cli v6.2.0我的 Sequelize 连接参数:
"development":
"username": "XXXXXX",
"password": "XXXXXX",
"database": "party_playlist",
"host": "127.0.0.1",
"dialect": "postgres"
,
"production":
"use_env_variable": "DATABASE_URL",
"dialect": "postgres",
"dialectOptions":
"ssl":
"require": "true",
"rejectUnauthorized": "false"
许多帖子都谈到了这个问题(GitHub:1 | 2 | 3,***:1 | 2 | 3),大多数都指向 pg v8 作为问题;但是,没有一个推荐的解决方案对我有用。
到目前为止我已经尝试过:
-
将
rejectUnauthorized: false
添加到我的 Sequelize 连接参数中
在 dialectOptions 之外的配置中添加 ssl:true
将NODE_TLS_REJECT_UNAUTHORIZED=0
添加到我的 Heroku 环境变量中
将PGSSLMODE=no-verify
添加到我的 Heroku 环境变量中
打开/关闭 Heroku 的 Automatic Certificate Management
功能
回滚到 pg v7(各种颠覆)
1-5 没有效果,回滚到 pg v7 会破坏应用程序(在本地,任何尝试对数据库的读/写操作都会挂起,没有错误消息;在 heroku 上,db:migrate 命令运行时没有错误消息,但数据库没有更新)。我假设 pg v7 与我的 Node 版本或我的项目中的某些其他包版本不兼容,但我不知道如何找出兼容的版本集,而不是通过反复试验,这是不可行的。另外,顺便说一句,这是一个爱好项目,所以我不担心 MITM 攻击。
有趣的是,当我运行heroku pg:psql
时,我能够很好地连接到我的 Heroku 数据库!
有什么办法可以解决这个问题吗?任何和所有的帮助将不胜感激!
【问题讨论】:
【参考方案1】:我从here 看到您的问题,那里接受的答案对我有用。我观察到我们有相同版本的 pg 和 sequelize 但不同版本的节点。我在 v14.8.0 上。我建议您使用nvm 切换到该版本并重试,因为我观察到奇数(如13,15)的节点版本经常会出现问题(不过我的观察可能是错误的)。
【讨论】:
感谢camelCase!整理出来......我的布尔值被一些额外的引号包裹起来。感谢您的关注! 哦,我什至没有注意到。不过很酷。【参考方案2】:这个:
"ssl":
"require": "true",
"rejectUnauthorized": "false"
应该是这样的:
"ssl":
"rejectUnauthorized": false
注意布尔值周围的引号。
愚蠢的错误,但我会留下这个,以防有一天其他人犯同样的错误。
【讨论】:
以上是关于Heroku 运行 sequelize db:migrate 时出现“自签名证书”错误的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 sequelize 从本地节点应用程序连接到 heroku postgresql 数据库
heroku Postgres - 续集:主机没有 pg_hba.conf 条目