【问题标题】:Deploy Expressjs on AWS with Public ACM使用公共 ACM 在 AWS 上部署 Expressjs
【发布时间】:2021-04-16 04:47:16
【问题描述】:

我在 expressjs 中构建我的项目,我想将它部署在特定端口上。我在我的 AWS EC2 实例(Ubuntu)上部署了它并且它工作正常,但问题是它运行在 HTTP 上,而不是 HTTPS。所以我研究了如何在 HTTPS 上运行 expressjs,我发现的唯一方法如下:

    var   fs = require("fs"),
    http = require("https");

var privateKey = fs.readFileSync('sslcert/server.key').toString();
var certificate = fs.readFileSync('sslcert/server.crt').toString();

var credentials = {key: privateKey, cert: certificate};

var server = http.createServer(credentials,function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
});

server.listen(8000);

但是这种方法的问题是它需要证书和密钥文件才能启用 HTTPS。我正在使用公共 ACM,AWS 没有为此提供文件。我尝试了使用库https://www.npmjs.com/package/express-sslify 的另一种方法。它将我的 expressjs 重定向到 HTTPS,但它给出了 SSL 错误。 SSL 已经使用 AWS ACM 公共证书部署在我的网站上,并且运行良好。 请指导我需要哪些步骤才能使我的 expressjs 项目与 AWS ACM 兼容。

【问题讨论】:

    标签: javascript node.js amazon-web-services express ssl


    【解决方案1】:

    the documentation:

    AWS Certificate Manager 支持越来越多的 AWS 服务。您不能直接在基于 AWS 的网站或应用程序上安装您的 ACM 证书或私有 ACM Private CA 证书。

    将支持的服务之一放在您的 Express 服务器前面。 Elastic Load Balancer 可能是您的最佳选择,因为您使用的是 EC2 实例,而不是更面向服务的 AWS 功能之一。

    如果您想在 EC2 实例上处理 SSL,那么Amazon suggest using a third-party certificate authority

    【讨论】:

    • 有什么办法,比如告诉 express 只使用不同的协议或将其地址更改为 HTTPS?
    • @DIGITALJEDI — 您可以让 Express 直接运行 SSL 证书;您仍然需要从不是 AWS Certificate Manager 的地方获取 SSL 证书
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-23
    • 2020-01-13
    • 2014-12-16
    • 1970-01-01
    • 2021-03-08
    • 2019-06-14
    • 1970-01-01
    相关资源
    最近更新 更多