【发布时间】:2021-05-07 13:04:58
【问题描述】:
有没有办法在不暴露证书内容的情况下使用节点传递安全内容(https:443)?
import express from 'express'
import fs from 'fs'
import https from 'https'
const app:express.Express = express()
const options: https.ServerOptions = {
key: fs.readFileSync('/etc/ssl/private/my.private.key'),
cert: fs.readFileSync('/etc/ssl/certs/my.public.crt')
}
const httpsServer:https.Server = https.createServer(options, app)
[ code here ]
httpsServer.listen(443);
这可行,但我的网络应用程序必须以 root 用户身份运行,我认为这是一个坏主意。此外,我的证书内容,尤其是我的私钥,会在网络环境中公开。
有没有办法在当前节点执行上下文之外管道加密和解密过程?类似于 php/apache 模式:Apache 处理 ecrypt/decrypt 过程并以 www-data 用户身份执行 php 脚本。 php 脚本无法读取证书内容,这意味着它们是 100% 安全的,并且无法从 php 上下文中访问。
我知道我们可以设置一个 apache 层来代理安全内容 (https) 到本地不安全内容 (http),以便节点可以处理它。但这增加了相当大的复杂性。任何人都有只使用节点的更安全的方法吗?就像使用“第三方应用程序”一样,它本质上会使用提供的证书路径对内容进行编码/解码,以 ssl-cert 用户身份运行?
【问题讨论】: