PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie füge ich ein SSL-Zertifikat (ca-cert) zu den Umgebungsvariablen von node.js hinzu, um eine Verbindung zur Digital Ocean Postgres Managed Database herzustellen?

Okay, ich konnte es endlich herausfinden. Ich denke, das Problem war mehrzeilig und einfach die Unkenntnis von dotenv für meine lokale Entwicklungsumgebung.

Ich konnte alles mit meinem Code so zum Laufen bringen. Es funktionierte auch mit fs.readFileSync(), aber ich wollte das nicht an meine Quellcodeverwaltung übergeben.

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

Jetzt musste ich es in meiner config.env so aussehen lassen:

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

Ich musste es als einzeiligen String behalten, damit es funktioniert. Aber ich sollte mich endlich mit

verbinden
{rejectUnauthorized:true} 

Für die Umgebungsvariable der digitalen Ozean-App-Plattform habe ich alles einschließlich der doppelten Anführungszeichen kopiert und dort eingefügt. Scheint super zu funktionieren. Ich glaube jedoch nicht, dass Sie diese Einstellung mit ihrer 7-Dollar-Entwicklungsdatenbank auf "true" setzen können. Ich musste auf das verwaltete upgraden, um ein CA-Zertifikat zum Herunterladen zu finden.