【问题标题】:Getting https on a Node server with ec2 instance在具有 ec2 实例的节点服务器上获取 https
【发布时间】:2021-02-19 19:51:55
【问题描述】:

我有一个运行我的 node.js 后端的 ec2 实例 (ubuntu):APi + Mongodb。我用 PM2 运行节点服务器。我正在尝试向其添加 https。

这是我的 node.js 代码:

const express = require("express");
const app = express();
const fs = require("fs");
const https = require("https");

var options = {
    key: fs.readFileSync("./privatekey.pem"),
    cert: fs.readFileSync("./server.crt"),
};

const port = process.env.PORT || 3000;
https
    .createServer(options, app)
    .listen(port, () => console.log(`listening to port ${port}`));
 

HTTP 有效。当我在端口 3000 访问 https 时,我收到以下消息:

"This connection is not private". This website may be impersonating "ec2-XX-XXX-XXX-XXX" ....." 

我知道证书只适用于本地主机?但是我怎样才能让它们在产品中工作呢?据我了解,不能为 IP 地址购买 SSL 证书?

有什么建议吗?

PS:我尝试使用端口 443,但遇到了权限问题(显示在 PM2 日志中)...

-------编辑----

我的意思是在没有任何 SSL 安全错误的情况下将我的前端(在一个实例中)连接到我的后端(在另一个实例中)。

我最终在 AWS 托管区域中创建了一个子域,该子域重定向到我的前端域。我使用 Nginx 和 Certobot 将新的 SSL 证书上传到我的子域实例。

我之前创建了一个子域,但做错了。这次我按照这个教程做了,花了 2 分钟。

https://dev.to/arswaw/create-a-subdomain-in-amazon-route53-in-2-minutes-3hf0

【问题讨论】:

    标签: node.js amazon-web-services ssl amazon-ec2 https


    【解决方案1】:

    不能为 IP 地址购买 SSL 证书吗?

    您应该拥有自己的域名。在 Route53 或您喜欢的任何其他域名经销商处购买。然后,您可以为自己的域获取自己的 SSL 证书。

    【讨论】:

    • 我已经有另一个域,其中包含我的前端。有什么方法可以链接它们而无需购买另一个域+ssl? @Marcin
    • @Dom355 您可以创建子域。如果您需要来自letsencrypt的新证书,也可以免费获得SSL证书。
    【解决方案2】:

    如果您不想在实例上使用 certbot,您可以创建 SSL 证书(在 ACM 中)并从 AWS 控制台中将其分配给 ELB。

    只需将需要 SSL 证书的实例放在 ELB 的目标组中,然后更新您的 DNS 以反映这一点。如果您有 2 个 EC2 实例,您也可以使用另一个 ELB 来执行此操作。它要花更多的钱,但现在 AWS 有责任更新证书,您根本不需要在实例上使用 certbot。我建议在 ACM 中创建证书时使用 DNS 验证,并使用通配符 (*.mydomain.com) 来允许您的后端子域。

    您需要为您的后端服务创建一个子域并更新您的 nginx 配置(在后端 EC2 实例上),以侦听流量。

    最终产品应该是 2 个实例、2 个 ELB、一个通配符 SSL 证书。

    【讨论】:

    • 好建议乔丹。我选择了 2 Ec2(非常便宜),因为我的 mongodb 在那里。使用 Certbot 和 Nginx 进行反向代理。现在效果很好。
    猜你喜欢
    • 1970-01-01
    • 2020-03-21
    • 2020-07-08
    • 2018-05-27
    • 1970-01-01
    • 2016-04-17
    • 1970-01-01
    • 2021-09-08
    • 2018-12-08
    相关资源
    最近更新 更多