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

如何在JavaScript中创建支持SSL连接PostgreSQL后端的Pool对象

Node.js pg库Pool实例SSL连接PostgreSQL配置方案

pg库的Pool构造函数原生支持SSL连接配置,只需在原有参数中新增ssl配置项即可,不同场景的配置方式如下:

场景1:公共CA签发证书的生产环境(如云托管PostgreSQL服务)

直接将ssl字段设为true即可,驱动会自动信任公共CA签发的证书:

const Pool = require('pg').Pool
const pool = new Pool({
  user: 'my_user',
  host: '你的PostgreSQL服务地址',
  database: 'my_database',
  password: '你的数据库密码',
  port: 5432,
  // 新增SSL配置
  ssl: true
});

场景2:开发测试环境自签名证书

如果测试环境用的是自签名证书,不需要做证书合法性校验,可按如下配置(该配置存在安全风险,仅可用于开发测试环境,禁止生产环境使用):

const Pool = require('pg').Pool
const pool = new Pool({
  user: 'my_user',
  host: '你的PostgreSQL服务地址',
  database: 'my_database',
  password: '你的数据库密码',
  port: 5432,
  ssl: {
    rejectUnauthorized: false
  }
});

场景3:自签名证书的生产环境

如果生产环境使用自签名证书,需要指定可信根证书做校验,避免中间人攻击,配置如下:

const fs = require('fs')
const Pool = require('pg').Pool
const pool = new Pool({
  user: 'my_user',
  host: '你的PostgreSQL服务地址',
  database: 'my_database',
  password: '你的数据库密码',
  port: 5432,
  ssl: {
    // 读取服务端根证书内容
    ca: fs.readFileSync('/本地证书存放路径/rootCA.pem').toString(),
    // 如果服务端要求客户端证书验证,再补充以下两个配置项
    key: fs.readFileSync('/本地证书存放路径/client-key.pem').toString(),
    cert: fs.readFileSync('/本地证书存放路径/client-cert.pem').toString()
  }
});

补充说明

  • 如果你习惯用连接字符串配置连接,可以直接在串尾添加参数:公共CA场景加?ssl=true,测试环境不校验证书加?sslmode=no-verify
  • 上述配置逻辑全平台通用,Windows、Linux、macOS环境无需额外适配
  • 该配置仅适用于PostgreSQL的pg驱动,MySQL等其他数据库的SSL连接需要参考对应驱动的配置规范,不可直接复用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 07:36:00