gpt4 book ai didi

node.js - 如何将 SSL 证书 (ca-cert) 添加到 node.js 环境变量以连接到 Digital Ocean Postgres 托管数据库?

转载 作者:行者123 更新时间:2023-12-04 22:36:19 30 4
gpt4 key购买 nike

我目前正在使用 node-postgres 来创建我的池。这是我当前的代码:

const { Pool } = require('pg')

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,
// Would like to add line below
// ca: process.env.CACERT,
},
})
我发现了另一篇文章,他们使用“fs”在证书中阅读,如下所示。
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()
}
}
我无法做到这一点,因为我正在使用 git 来部署我的应用程序。特别是 Digital Oceans 新应用平台。我曾尝试与他们联系,但没有成功。我不想在我的源代码管理中提交我的证书。我看到很多人建议设置的帖子
ssl : { rejectUnauthorized: false}
这不是我想采取的方法。我的代码确实适用于此,但我希望它是安全的。
感谢任何帮助。

最佳答案

好吧,我终于能够弄清楚了。我认为问题是多行的,只是不熟悉 dotenv 对于我的本地开发环境。
我能够像这样使用我的代码来完成所有工作。它也适用于 fs.readFileSync() 但我不想将其提交给我的源代码管理。

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)
})
现在在我的 config.env 中,我必须让它看起来像这样:
CA_CERT="-----BEGIN CERTIFICATE-----\nVALUES HERE WITH NO SPACES AND A \n 
AFTER EACH LINE\n-----END CERTIFICATE-----"
我必须将其保留为单行字符串才能使其正常工作。但我终于与
{rejectUnauthorized:true} 
对于 digital ocean 应用平台环境变量,我复制了包括双引号在内的所有内容并将其粘贴在那里。似乎工作得很好。不过,我认为您无法使用他们的 $7 开发数据库将此设置设置为 true。我必须升级到托管的才能找到要下载的任何 CA 证书。

关于node.js - 如何将 SSL 证书 (ca-cert) 添加到 node.js 环境变量以连接到 Digital Ocean Postgres 托管数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66501428/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com