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

升级Node.js 12至14后,Lambda用pg连PostgreSQL遇证书链错误

解决Node.js 14升级后pg连接PostgreSQL的自签名证书链错误

解决方案1:临时禁用证书验证(仅测试/应急)

在pg客户端配置中添加ssl.rejectUnauthorized: false,跳过证书验证:

const { Client } = require('pg');

const client = new Client({
  host: '你的数据库地址',
  port: 5432,
  user: '数据库用户名',
  password: '数据库密码',
  database: '目标数据库',
  ssl: {
    rejectUnauthorized: false
  }
});

注意:生产环境禁止使用该方案,会彻底失去TLS加密的安全性保障。

解决方案2:导入信任的自签名证书(生产环境推荐)

将PostgreSQL的CA证书文件(如root.crt)加入Lambda部署包,然后在连接配置中指定证书路径:

const { Client } = require('pg');
const fs = require('fs');

const client = new Client({
  host: '你的数据库地址',
  port: 5432,
  user: '数据库用户名',
  password: '数据库密码',
  database: '目标数据库',
  ssl: {
    ca: fs.readFileSync('./root.crt').toString() // 证书路径根据实际部署位置调整
  }
});

如果是AWS RDS PostgreSQL,可使用官方提供的RDS根证书,将其放入Lambda代码目录后一起部署。

解决方案3:升级pg包至兼容Node.js 14的版本

旧版pg可能与Node.js 14的TLS实现存在兼容性问题,执行以下命令升级pg:

npm install pg@latest

升级完成后重新测试数据库连接。

问题原因

Node.js 14默认启用了更严格的TLS证书验证规则,而Node.js 12对部分不规范的自签名证书允许通过;同时旧版本pg包的默认配置未适配Node.js 14的验证逻辑,导致升级后触发SELF_SIGNED_CERT_IN_CHAIN错误。

内容的提问来源于stack exchange,提问作者Sandeep Parashar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:55:23