PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Comment ajouter un certificat SSL (ca-cert) aux variables d'environnement node.js afin de se connecter à Digital Ocean Postgres Managed Database ?

Bon j'ai enfin pu comprendre. Je pense que le problème était multiligne et que je ne connaissais pas dotenv pour mon environnement de développement local.

J'ai pu tout faire fonctionner avec mon code comme celui-ci. Cela a également fonctionné avec fs.readFileSync() mais je ne voulais pas le valider dans mon contrôle de code source.

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

const pgPool = new Pool({
user: process.env.PGUSER,
password: process.env.PGPASSWORD,
host: process.env.PGHOST,
database: process.env.PGDATABASE,
port: process.env.PGPORT,
ssl: {
    rejectUnauthorized: true,
    // ca: fs.readFileSync(
    //     `${process.cwd()}/cert/ca-certificate.crt`.toString()
    // ),
    ca: process.env.CA_CERT,
},
})
.on('connect', () => {
    console.log('connected to the database!')
})
.on('error', (err) => {
    console.log('error connecting to database ', err)
})

Maintenant, dans mon config.env, je devais le faire ressembler à ceci :

CA_CERT="-----BEGIN CERTIFICATE-----\nVALUES HERE WITH NO SPACES AND A \n 
AFTER EACH LINE\n-----END CERTIFICATE-----"

J'ai dû le garder comme une seule chaîne de caractères pour que cela fonctionne. Mais je devais enfin me connecter avec

{rejectUnauthorized:true} 

Pour la variable d'environnement de la plate-forme d'application de l'océan numérique, j'ai tout copié, y compris les guillemets doubles, et je l'ai collé là-dedans. Semble fonctionner très bien. Je ne pense pas que vous puissiez définir ce paramètre sur true avec leur base de données de développement à 7 $. J'ai dû passer à la version gérée afin de trouver un certificat CA à télécharger.