You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS TypeOrmModule部署到Heroku报错self signed certificate如何解决

问题解决指南

错误根因

该报错由SSL证书校验失败触发:Heroku官方托管的数据库(如Heroku Postgres)默认使用自签名SSL证书,TypeORM默认会校验SSL证书的权威签发属性,自签名证书无法通过校验,因此抛出连接失败错误。

解决方案

修改app.module.ts中TypeOrmModule的连接配置,新增SSL校验规则即可,推荐使用以下兼容方案:

TypeOrmModule.forRoot({
  // 原有配置(type、host、port、username、password、database、entities、synchronize等)保持不变
  ssl: true,
  extra: {
    ssl: {
      rejectUnauthorized: false
    }
  }
})

仅测试场景可临时关闭SSL:将ssl字段设为false即可,Heroku生产环境数据库一般强制要求SSL连接,不推荐长期使用该配置。

后续验证步骤

  • 提交修改后的代码重新部署到Heroku
  • 查看服务启动日志,确认TypeOrmModule连接成功的提示输出,无报错即可

异常排查补充

如果修改后仍无法连接,可逐一核对以下配置:

  • 确认已正确读取Heroku环境变量中的数据库连接信息,没有硬编码错误的数据库地址、账号密码
  • 确认数据库侧已放开公网访问权限,没有限制Heroku的出口IP访问
  • 确认TypeORM版本与对应数据库驱动版本兼容,没有版本不匹配导致的SSL参数不生效问题

注意事项

rejectUnauthorized: false仅适配Heroku这类官方托管的自签名证书场景,如果你使用自行部署的数据库,不建议使用该配置,避免存在中间人攻击风险。

内容的提问来源于stack exchange,提问作者Santiago molano perdomo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 00:24:04