首页 > 解决方案 > Elastic beanstalk 请求上的 Node.js 是 HTTPS,但 express 是作为 HTTP 服务的。这安全吗?

问题描述

我有托管在 AWS 弹性豆茎上的节点快递项目。当我检查开发工具中的网络选项卡时,我的请求是 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);

标签: node.jsamazon-web-servicesexpressamazon-elastic-beanstalk

解决方案


您不必将其更改为 HTTPS 。

当您使用 AWS EB 时,您会在用于反向代理到您的应用程序的每台机器上获得带有证书 + nginx 的负载均衡器 (ELB)。

AWS 免费帮助您保护与负载均衡器的连接。

如果您想添加额外的安全层,这取决于您。

对于大多数用例,除非您真的处理非常敏感的数据(医疗、工业),否则第一层已经足够好,并且将保持与 ELB 的所有连接安全且不受影响。

如果您确实想添加额外的安全层,您可以使用“让我们加密”创建证书,将密钥保存在您的机器上,然后使用 https 启动服务器并配置密钥。

看看: https ://www.sitepoint.com/how-to-use-ssltls-with-node-js/

它正在使用 certbot (让我们加密 cli ...)


推荐阅读