SSL para la conexión PostgreSQL nodejs

Estoy tratando de conectarme a mi base de datos Heroku PostgreSQL y sigo recibiendo un error de SSL. ¿Alguien tiene una idea sobre cómo habilitar SSL en la cadena de conexión?

postgres://user:pass@host:port/database;

Lo he estado buscando por todas partes, pero no parece ser un tema muy popular. Por cierto, estoy ejecutando Nodejs y el módulo node-pg con su método de conexión agrupada:

pg.connect(connString, function(err, client, done) { /// Should work. });

Los comentarios son muy apreciados.

Puedes lograr esto así:

 postgres://user:pass@host:port/database?ssl=true 

También puede usar este código a continuación cuando cree un nuevo Cliente desde node-postgres :

 var pg = require("pg"); var client = new pg.Client({ user: "yourUser", password: "yourPass", database: "yourDatabase", port: 5432, host: "host.com", ssl: true }); client.connect(); var query = client.query('CREATE TABLE people(id SERIAL PRIMARY KEY, name VARCHAR(100) not null)'); query.on('row', function(row) { console.log(row.name); }); query.on('end', client.end.bind(client)); 

¡Espero que esto ayude!

Con Google Cloud PG y pg-promise tuve una necesidad similar. El error que obtuve (usando ?ssl=true ) fue que la connection requires a valid client certificate .

La conexión SSL no está documentada para pg-promise pero se basa en node-postgres . Como se explica en el enlace, el parámetro de configuración ssl puede ser más que true :

 const pgp = require('pg-promise')(); const fs = require('fs'); const connectionConf = { host: 'myhost.com', port: 5432, database: 'specific_db_name', user: 'my_App_user', password: 'aSecretePass', ssl: { rejectUnauthorized : false, ca : fs.readFileSync("server-ca.pem").toString(), key : fs.readFileSync("client-key.pem").toString(), cert : fs.readFileSync("client-cert.pem").toString(), } }; const new_db = pgp(connectionConf); new_db.any('SELECT * FROM interesting_table_a LIMIT 10') .then(res => {console.log(res);}) .catch(err => {console.error(err);}) .then(() => {new_db.$pool.end()});