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:trueNODE_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中续集迁移

heroku Postgres - 续集:主机没有 pg_hba.conf 条目

如何将 sequelize.sync 选项强制设置为 false?

将 Socket.io 与 Sequelize 一起使用

Sequelize beforeConnect 钩子与 sequelize-typescript 未运行