如何将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?

查看:23
本文介绍了如何将SSL证书(ca-cert)添加到node.js环境变量以连接到Digital Ocean Postgres托管数据库?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我当前正在使用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部署我的应用程序。具体地说,数字海洋新的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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆