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
相关产品推荐
相关产品推荐

