如何使用Nodejs使用SSL为数字海洋管理的Postgres数据库创建连接池



我使用nodejs和express编写了一个API。我的数据库被黑客入侵,我决定使用数字海洋管理数据库。数字海洋管理数据库需要SSL,他们只为您提供一个CA证书。在所有教程中,SSL需要3个文件。我没有找到任何关于如何仅用一个文件连接节点pg的教程。我终于找到了解决方案,我想与社区分享。希望我能为某人节省几个小时的挖掘时间。

Digital Ocean为您提供的证书是根证书,而不是客户端证书。在节点pg中,cert是指客户端证书,而CA是指根证书。应该使用CA选项,而不是Cert选项。

  1. CA:root.crt(用于传入消息;Digital Ocean为您提供此消息(
  2. 密钥:postgresql.Key(您不需要它(
  3. Cert:客户端证书(您不需要它(

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

如果这个答案对你有用,请竖起大拇指,这样其他人也能找到。

最新更新