sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo agregar un certificado SSL (ca-cert) a las variables de entorno de node.js para conectarse a la base de datos administrada de Digital Ocean Postgres?

Muy bien, finalmente pude resolverlo. Creo que el problema era multilínea y simplemente no estaba familiarizado con dotenv para mi entorno de desarrollo local.

Pude hacer que todo funcionara con mi código de esta manera. También funcionó con fs.readFileSync() pero no quería enviar eso a mi control de código fuente.

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)
})

Ahora en mi config.env tenía que hacer que se viera así:

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

Tuve que mantenerlo como una cadena de una sola línea para que funcionara. Pero finalmente pude conectarme con

{rejectUnauthorized:true} 

Para la variable de entorno de la plataforma de la aplicación digital ocean, copié todo, incluidas las comillas dobles, y lo pegué allí. Parece funcionar muy bien. Sin embargo, no creo que pueda establecer esta configuración en verdadero con su base de datos de desarrollo de $7. Tuve que actualizar al administrado para encontrar cualquier certificado de CA para descargar.