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

Node.js连接GCP Cloud SQL PostgreSQL(SSL强制)报错:服务器不支持SSL连接

解决Node.js连接Google Cloud SQL PostgreSQL SSL失败的问题

核心错误:SSL证书参数对应错误

你的db.js中SSL配置的三个证书文件对应关系完全搞反了,这是导致连接失败的直接原因。pg库对SSL参数的要求是:

  • ca:服务器CA证书(对应下载的server-ca.pem)
  • cert:客户端证书(对应下载的client-cert.pem)
  • key:客户端私钥(对应下载的client-key.pem)

你当前代码把这三个文件的位置弄混,导致SSL握手不通过,触发"The server does not support SSL connections"错误。

修正后的db.js代码

const { Pool } = require('pg');
const dotenv = require('dotenv');
const fs = require('fs');

dotenv.config();

const pool = new Pool({
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  host: process.env.DB_HOST,
  port: process.env.DB_PORT,
  database: process.env.DB_NAME,
  ssl: {
    ca: fs.readFileSync('./ssl_files/server-ca.pem'),
    cert: fs.readFileSync('./ssl_files/client-cert.pem'),
    key: fs.readFileSync('./ssl_files/client-key.pem'),
  },
});

pool
  .connect()
  .then((obj) => {
    console.log('Conexión a la base de datos establecida');
    obj.done();
  })
  .catch((error) => {
    console.error('Error al conectar a la base de datos:', error);
  });

module.exports = { pool };

额外验证步骤

  • 确认证书路径:检查./ssl_files/目录下的三个证书文件是否存在,文件名无拼写错误
  • 环境变量核对:确保.env里的DB_HOST、DB_PORT、DB_USER等参数和你在pgAdmin中使用的完全一致
  • 云SQL配置检查:在GCP控制台确认你的SQL实例已开启"强制SSL连接"选项
  • 授权网络验证:如果本地运行Node.js,确认你的公网IP已添加到云SQL的授权网络列表中

内容的提问来源于stack exchange,提问作者Carlos Muñoz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 21:05:02