SSL pour connexion PostgreSQL nodejs

j'essaie de me connecter à mon Heroku PostgreSQL DB et j'obtiens toujours une erreur SSL. Quelqu'un a-t-il une idée sur la façon d'activer SSL dans la chaîne de connexion?

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

Été la chercher partout, mais il ne semble pas être un sujet très populaire. En passant, je suis en cours d'exécution de Nodejs et le nœud-pg module avec sa connexion collectifs-méthode:

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

Commentaires sont très appréciés.

25
demandé sur Milen A. Radev 2014-03-10 17:37:48

3 réponses

Vous pouvez le faire comme ceci:

postgres://user:pass@host:port/database?ssl=true
46
répondu Jérôme Verstrynge 2014-07-25 18:13:17

Vous pouvez également utiliser ce code ci-dessous lorsque vous créez un nouveau Client à partir de 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));

espérons que cela aide!

6
répondu felipekm 2015-05-07 19:16:14

avec Google Cloud PG et pg-promesse j'avais le même besoin. L'erreur que j'ai eu (à l'aide de ?ssl=true)connection requires a valid client certificate.

la connexion SSL n'est pas documentée pour pg-promise mais il est construit sur node-postgres. Comme expliqué dans le lien, le ssl le paramètre de configuration peut être plus 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()});
1
répondu amotzg 2018-08-21 09:23:10