Как создать пулы соединений для базы данных Postgres, управляемой Digital Ocean, используя SSL с Nodejs?

#node.js #database #postgresql #ssl #digital-ocean

#node.js #База данных #postgresql #ssl #digital-ocean

Вопрос:

Я пишу API с использованием nodejs и express. Моя база данных была взломана, и я решил использовать базу данных, управляемую Digital Ocean. Для базы данных, управляемой Digital Ocean, требуется SSL, и они предоставляют вам ТОЛЬКО один сертификат CA. Во всех руководствах для SSL требуется 3 файла. Я не нашел ни одного руководства о том, как подключить node-pg только с одним файлом. Я наконец нашел решение и хочу поделиться им с сообществом. Надеюсь, я сэкономлю кому-то несколько часов копания.

Ответ №1:

Сертификат, который предоставляет вам Digital Ocean, является корневым сертификатом, а НЕ сертификатом клиента. В node-pg cert ссылается на сертификат клиента и CA ссылается на корневой сертификат. CA опция — это та, которую следует использовать, а не Cert .

  1. CA: root.crt (для входящих сообщений; Digital Ocean предоставляет вам это)
  2. Ключ: postgresql.key (он вам не нужен)
  3. Сертификат: сертификат клиента (он вам не нужен)

 const config = {
  database: 'database-name',
  host: 'host-or-ip',
  user: 'username',
  password: 'password',
  port: 1234,
  // this object will be passed to the TLSSocket constructor
  ssl: {
    ca: fs.readFileSync('/path/to/digitalOcean/certificate.crt').toString()
  }
}  

Если этот ответ был полезен для вас, поднимите большой палец вверх, чтобы другие люди тоже могли его найти.