PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como adicionar um certificado SSL (ca-cert) às variáveis ​​de ambiente node.js para se conectar ao banco de dados gerenciado Postgres Digital Ocean?


Pronto, finalmente consegui resolver. Acho que o problema era multilinha e apenas falta de familiaridade com o dotenv para o meu ambiente de desenvolvimento local.

Consegui fazer tudo funcionar com meu código assim. Ele também funcionou com o fs.readFileSync(), mas eu não queria confirmar isso no meu controle de origem.
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)
})

Agora no meu config.env eu tive que fazer com que ficasse assim:
CA_CERT="-----BEGIN CERTIFICATE-----\nVALUES HERE WITH NO SPACES AND A \n 
AFTER EACH LINE\n-----END CERTIFICATE-----"

Eu tive que mantê-lo como uma string de linha única para que funcionasse. Mas eu estava finalmente para me conectar com
{rejectUnauthorized:true} 

Para a variável de ambiente da plataforma digital ocean app, copiei tudo, incluindo as aspas duplas, e colei lá. Parece funcionar muito bem. Eu não acho que você poderá ter essa configuração definida como verdadeira com o banco de dados de desenvolvimento de US $ 7. Eu tive que atualizar para o gerenciado para encontrar qualquer certificado CA para download.