【问题标题】:SSL AWS EC2 backend with S3 frontendSSL AWS EC2 后端和 S3 前端
【发布时间】:2021-07-07 21:37:02
【问题描述】:

我有一个在 S3 上运行的 VueJS 前端应用程序,用作静态网站。

我有一个 NodeJS(在 nginx 反向代理后面,加上一些其他服务)后端应用程序在 VueJS 应用程序(目前通过 http)与之通信的 EC2 实例上运行。

我有一个域成功地指向了 VueJS 应用程序(S3 存储桶),并使用 Route53 / CloudFront / ACM 配置了 SSL 证书。

但是,现在 VueJS 应用程序将无法与 EC2 实例后端通信,因为它仍在使用现在不允许的 HTTP。

那么配置它的最佳方法是什么?我无法在 ec2 实例上运行 certbot 并为我的域生成 SSL 证书,因为 S3 存储桶已经使用了证书。

我应该只创建一个自签名证书吗?

我可以为子域创建另一个证书(例如api.example.com)并设置 DNS 记录以指向我的 EC2 实例 IP 地址吗?

这通常是如何完成的,最佳做法是什么?

【问题讨论】:

    标签: amazon-web-services ssl amazon-s3 amazon-ec2


    【解决方案1】:

    所以自签名证书不起作用,它不会通过验证,因为它背后没有已知的 CA(证书颁发机构)我的意思是你可以安装它,但浏览器会抱怨..

    我不确定我是否理解您为什么不能使用 certbot.. s3 / ec2 是两个独立的服务,所以我在这里有点困惑?

    您可以使用 letencrypt 为服务器生成证书并安装它,但如果您有集群,则将其安装在实际的 ALB 上可能会更好,但是这并不能确保端到端,如果证书未安装在所有后端系统上,(这将需要在集群中的所有系统上安装证书)您的要求将决定这一点。

    如果您无法使用 letencrypt 生成证书,您可以从 ssls.com 获取 SSL,然后在服务器/负载平衡器上安装 PEM 或 CRT。

    【讨论】:

    • 所以我已经在 ACM 上为 S3 前端的 *.example.comexample.com 创建了证书。我不确定如何为 EC2 后端创建一个单独的,例如 api.example.com
    • 有很多方法可以做到这一点,但这取决于您是想购买还是免费获得。 ssls.com 将允许您以 5.00 的价格购买一个,letsencrypt 也是免费的,但需要安装在 ec2 实例上并进行配置,但两者都可以工作。然后你只需要告诉服务器证书在哪里或者导出并放在 ALB 上
    • 谢谢。好的,所以我在 Route 53 api.example.com 中创建了另一个 A 记录,指向我的 EC2 IP,然后在该域上运行 certbot。这似乎已经奏效了,谢谢。
    • 如果它被加密直到它到达你的负载均衡器,这符合弱形式 E2E 加密的定义,因为负载均衡器是你系统的边缘。它不需要在您的系统内部保持加密,因为一旦它到达 LB,就无法再被拦截,您实际上是通过本地网络进行通信。除非您正在实施强形式 E2E 加密(即我的服务器不知道请求中的内容),在这种情况下,证书是在 LB 上还是服务器上并不重要。
    【解决方案2】:

    通常您创建一些子域,就像您为您的 api 所说的那样,并为该子域创建一个证书。特别是在 AWS 上,您可以使用弹性负载均衡器并使用 ACM /Route53 来简化证书管理,但这确实会带来负载均衡器的成本。

    另一种方法是在您的 EC2 实例前面放置一个 API 网关作为反向代理,这会带来一些成本,但可能不会那么多,具体取决于流量。

    【讨论】:

    • 将调查 ALB,谢谢。希望用 nginx 配置证书,但可能会涉及更多。
    • 无论哪种方式都可以。 ELB 只是少了一点手动
    • 谢谢。创建必要的 dns 记录后,我设法在 ec2 实例上使用 certbot 创建了一个证书。现在似乎一切都在工作,不需要 ELB。
    • 是的,你不需要 ELB,绝不意味着你需要。我是说你可以使用 ELB 来简化一些事情。
    猜你喜欢
    • 1970-01-01
    • 2022-01-20
    • 2022-07-27
    • 2021-10-25
    • 2022-11-04
    • 2020-06-20
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多