在 EC2 上启用 SSL 的替代方法

在 EC2 上启用 SSL 的替代方法

我有一个现有的 AWS EC2 实例,其中包含一个应用程序服务器和一个 Web 服务器(apache)。我的外部 DNS 通过其弹性 IP 将来自 www.x.com、api.x.com、oa.x.com 的流量定向到该实例。www.x.com 由 Web 服务器提供服务,其他子域由应用服务器提供服务。所有流量都是 HTTPS,并且 EC2 上安装了 letsencrypt 以获取 SSL 证书。这很好用。

现在,我正在推出一个新的 EC2 实例,因为现有的实例太小,并且开始出现异常。一切都很好,只是我无法在新实例上安装 letsencrypt。阅读完后,我发现这实际上不受支持,这就是我决定改用 AWS 证书 (ACM) 的原因。

然而,两天后我仍然无法让 SSL 工作。我尝试创建一个 Cloudfront 发行版。客户端和 Cloudfront 之间的 SSL 工作正常,但我无法让 Cloudfront 和 EC2 之间的流量使用 SSL。

问题 1:是否可以在无需任何其他节点/组件(如负载均衡器)的情况下在 Cloudfront 和 EC2 之间获取 SSL/HTTPS?

问题 2:如果我在 EC2 实例前面添加一个负载均衡器(即使我只有一个实例),在我的设置中获取 SSL/HTTPS 是否会更好/更容易?

Q3:还有其他选择吗?

希望有人能给我指明正确的方向,这让我很抓狂,尤其是在星期五晚上:-) 干杯!

答案1

让我们加密

Let's Encrypt 可与公共互联网上的任何主机(包括 AWS)配合使用。我在我的 AWS EC2 实例上使用 Let's Encrypt,而您之前在 EC2 上使用过 LE。我很困惑您为什么认为 LE 不适用于 AWS。

我有一个关于 EC2 / LE 的教程这里。我使用的软件“ACME”的版本号现在可能是一个旧版本,如果你使用它,你应该检查是否有新版本。

实例大小

如果您需要更大的实例,您可以停止实例,更改大小,然后重新启动。如果您需要更大的 EBS 卷,您可以扩展卷。

AWS 证书管理器

本声明ECM 常见问题解答有点令人困惑的是,您不能在 EC2 实例上使用公共 ACM 证书。

问:我可以在 Amazon EC2 实例或我自己的服务器上使用证书吗?

您可以将 ACM Private CA 颁发的私有证书用于 EC2 实例、容器以及您自己的服务器。目前,公共 ACM 证书只能用于特定的 AWS 服务。请参阅我可以将 ACM 证书用于哪些 AWS 服务?

结论

我建议您重新使用 Let's Encrypt。如果您需要帮助,请提出另一个问题,说明您要实现的目标、哪些地方不起作用,并显示任何相关日志。

答案2

这看起来有点过头了,但效果相当好。在 EC2 实例前面设置一个面向公众的应用程序负载均衡器,并使用负载均衡器执行 HTTP->HTTPS SSL 终止。如果需要,这将使您可以轻松地在 AWS 级别而不是实例级别交换证书。更新 DNS 以指向负载均衡器而不是 EC2 实例。虽然这需要花费一些成本,但它肯定可以解决问题。

相关内容