sql >> Databáze >  >> RDS >> PostgreSQL

Jak přidat certifikát SSL (ca-cert) do proměnných prostředí node.js, abyste se mohli připojit k databázi Digital Ocean Postgres Managed Database?

Dobře, konečně jsem na to přišel. Myslím, že problém byl víceřádkový a pouze neznalost dotenv pro mé místní vývojové prostředí.

Podařilo se mi, aby to všechno fungovalo s mým kódem takto. Fungovalo to také s fs.readFileSync(), ale nechtěl jsem to svěřovat svému ovládání zdroje.

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

Nyní v mém config.env jsem musel, aby to vypadalo takto:

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

Musel jsem to ponechat jako jeden řádek, aby to fungovalo. Ale nakonec jsem se chtěl spojit s

{rejectUnauthorized:true} 

Pro proměnnou prostředí platformy digitální oceán jsem zkopíroval vše včetně dvojitých uvozovek a vložil to tam. Zdá se, že funguje skvěle. Nemyslím si však, že budete moci mít toto nastavení nastaveno na hodnotu true s jejich vývojovou databází $ 7. Musel jsem upgradovat na spravovaný, abych našel nějaký certifikát CA ke stažení.




  1. Výběr/přetypování výstupu jako celé číslo v SQL

  2. Proč se položka sekvence Postgres zvedne, i když se vytvoření objektu nezdaří?

  3. MySQL vybere jedno pole z tabulky WHERE podmínka ve více řádcích

  4. Který řádek je vybrán v GROUP BY?