如何将SSL证书(ca-cert)添加到node.js环境变量以连接到Digital Ocean Postgres托管数据库? [英] How to add an SSL certificate (ca-cert) to node.js environment variables in order to connect to Digital Ocean Postgres Managed Database?
本文介绍了如何将SSL证书(ca-cert)添加到node.js环境变量以连接到Digital Ocean 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部署我的应用程序。具体地说,数字海洋新的App平台。我试图联系他们,但没有成功。我不希望在源代码管理中提交我的证书。我看到很多人发帖子建议设置
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-----
VALUES HERE WITH NO SPACES AND A
AFTER EACH LINE
-----END CERTIFICATE-----"
我必须将其保持为单行字符串才能使其工作。但我最终还是连接到了
{rejectUnauthorized:true}
对于数字海洋应用程序平台环境变量,我复制了所有内容,包括双引号,并将其粘贴到其中。看起来很管用。不过,我认为您不能用他们的7美元开发数据库将此设置设置为真。我必须升级到托管证书才能找到要下载的CA证书。
这篇关于如何将SSL证书(ca-cert)添加到node.js环境变量以连接到Digital Ocean Postgres托管数据库?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文