Elastic beanstalk 请求上的 Node.js 是 HTTPS,但 express 是作为 HTTP 服务的。这安全吗?
Posted
技术标签:
【中文标题】Elastic beanstalk 请求上的 Node.js 是 HTTPS,但 express 是作为 HTTP 服务的。这安全吗?【英文标题】:Node.js on Elastic beanstalk requests are HTTPS but express is served as HTTP. Is this secure? 【发布时间】:2019-04-19 22:57:52 【问题描述】:我有一个托管在 AWS 弹性 beanstalk 上的 node express 项目。当我检查开发工具中的网络选项卡时,我的请求是 HTTPS。但是,我的 node express 应用程序的代码是在 HTTP 中提供的。我需要将“http”模块更改为“https”吗? 如果我这样做了,我是否必须在 AWS 的某个地方提供一些密钥?
const http = require('http');
const app = require('./app');
const normalizePort = val =>
var port = parseInt(val, 10);
if (isNaN(port))
// named pipe
return val;
if (port >= 0)
// port number
return port;
return false;
;
const onListening = () =>
const addr = server.address();
const bind = typeof addr === "string" ? "pipe " + addr : "port " + port;
//debug("Listening on " + bind);
;
const port = normalizePort(process.env.PORT || "8081");
app.set("port", port);
const server = http.createServer(app);
server.on("error", onError);
server.on("listening", onListening);
server.listen(port);
【问题讨论】:
【参考方案1】:您不必将其更改为 HTTPS。
当您使用 AWS EB 时,您会在用于反向代理到您的应用程序的每台机器上获得带有证书 + nginx 的负载均衡器 (ELB)。
AWS 免费帮助您保护与负载均衡器的连接。
是否要添加额外的安全层由您决定。
对于大多数用例,除非您真的处理非常敏感的数据(医疗、工业),否则第一层已经足够好,并且将保持与 ELB 的所有连接安全且不受影响。
如果您确实想添加额外的安全层,您可以使用“让我们加密”创建证书,将密钥保存在您的机器上,然后使用 https 启动服务器并配置密钥。
看看: https://www.sitepoint.com/how-to-use-ssltls-with-node-js/
它正在使用 certbot(让我们加密 cli ...)
【讨论】:
以上是关于Elastic beanstalk 请求上的 Node.js 是 HTTPS,但 express 是作为 HTTP 服务的。这安全吗?的主要内容,如果未能解决你的问题,请参考以下文章
Elastic Beanstalk 上的“laravel.log 无法打开”错误
原始 IP 未传递到 AWS Elastic Beanstalk 上的单个容器 Docker 映像上的容器
Elastic Beanstalk 上的 Sidekiq 进程 - Errno::ENOENT:没有这样的文件或目录 - getcwd
Elastic Beanstalk EC2 实例在端口 5000 和端口 80 上响应 http 请求
带有负载均衡器的 AWS Elastic Beanstalk Linux 托管实例上的 ASP.NET Core 3.1 - HTTPS