向 AWS EC2 实例添加安全 HTTPS 证书

Posted

技术标签:

【中文标题】向 AWS EC2 实例添加安全 HTTPS 证书【英文标题】:Adding a secure HTTPS certificate to AWS EC2 Instance 【发布时间】:2018-05-24 14:12:35 【问题描述】:

我有一个在 AWS EC2 实例上运行的应用程序,其域的名称服务器也在 AWS 上。我有公共 IP 的 A 记录。

我已经使用 ACM 创建了一个安全证书,还创建了一个 ELB 负载均衡器。我的域仍然没有在它前面显示 HTTPS。

谁能提供一些帮助?非常感谢

【问题讨论】:

您是否将 ACM 证书附加到 ELB? 嘿阿山。我是否通过创建 A 记录别名并选择 ELB 负载均衡器将 ACM 附加到 ELB?如果是这样,它不允许我创建另一个 A record.mydomain.com(我已经有一个 www.mydomain.com A 记录,其中包含来自托管应用程序的 AWS 的公共 EIP)。所以我正在寻找解决这个问题的方法。干杯 否 您需要编辑 ELB 配置并附加 ACM 证书。查看以下文档以获取更多详细信息。 docs.aws.amazon.com/elasticloadbalancing/latest/classic/… 还要确保您拥有与通过 A-Record Alias 映射到 ELB 的 SSL 证书相同的域。 感谢 Ashan,仍在努力解决这个问题。我已按照您提供的链接中的步骤操作,但无法使 HTTPS 正常工作。 ACM 证书似乎已附加到 ELB。 【参考方案1】:

你试过了吗?

首先,您需要打开 HTTPS 端口 (443)。为此,您转到https://console.aws.amazon.com/ec2/ 并单击左侧的安全组链接,然后创建一个新的安全组,该安全组也可用 HTTPS。然后,只需更新正在运行的实例的安全组或使用该组创建一个新实例。

完成这些步骤后,您的 EC2 工作就完成了,这都是一个应用程序问题。

感谢:https://***.com/a/6253484/8131036

【讨论】:

嗨 Craig,感谢您的洞察力,HTTPS 端口 443 已经打开,但是我无法在 www.mydomain.com 上运行 HTTPS【参考方案2】:

解决方案非常简单。

首先,编辑 ELB 上的侦听器并执行以下操作:

443 (HTTPS) => 80 (HTTP) - 并应用 ACM 证书。

这实际上是告诉 ELB 侦听端口 443 (HTTPS) 并终止证书,然后通过端口 80 (HTTP) 在内部转发流量 - 实例正在侦听的端口。

您还可以添加端口 80 (HTTP) 并转发到端口 80 (HTTP)(推荐然后设置您的应用程序以将所有用户重定向到 HTTPS)。你可以在这里阅读更多关于 ELB 和设置监听器的信息Create a Classic Load Balancer with an HTTPS Listener

您需要做的第二件事是更新 Route 53 以指向 ELB。 ascisolutions.com. A ALIAS s3-website-us-west-2.amazonaws.com.你可以在这里阅读更多信息Routing Traffic to an ELB Load Balancer

如果您在 cmets 部分有更多问题,请告诉我,我会尽力回复。

【讨论】:

嗨,Petru,感谢您的回答。我已经设置了上述内容,只是没有添加 A 记录,其中包含指向 ELB 负载均衡器的别名。这是因为它不允许我添加另一个 www.mydomain.com A 记录(我已经有一个 www.mydomain.com A 记录以及来自托管应用程序的 AWS 的公共 EIP)。所以我正在寻找解决这个问题的方法。希望您能提供一些进一步的指导。 @NPM 据我所知,同一个子域不能有 2 条记录,除非它们是不同的类型或者您正在进行健康检查。我建议您更新现有记录并将其指向 ELB 而不是 IP。这样,所有流量都将通过您的 ELB。不幸的是,这是唯一的方法。【参考方案3】:

You cannot install an ACM certificate on an ec2 instance directly,但您可以将其安装在您的负载均衡器和have the load balancer terminate SSL。

创建一个目标组并使用端口 80 注册您的 ec2 实例。

在您的 ELB 中,为端口 80 和 443 设置侦听器。您需要将 ACM 证书添加到您的 https 侦听器(端口 443)。请注意,证书需要与您的 ELB 在同一地区颁发。

ELB 不处理将不安全流量重定向到 HTTPS,如果需要,您需要更新您的应用程序以将 http 重定向到 https。

【讨论】:

您好,感谢您的建议。我已经完成了上述所有操作,但是如果您能详细说明您对“将 http 流量重定向到 https”的评论,那就太好了。非常感谢! @NPM ELB 不处理将 http 重定向到 https。因此,如果您想强制使用 https,您需要对您的 Web 服务器或应用程序进行必要的更新。

以上是关于向 AWS EC2 实例添加安全 HTTPS 证书的主要内容,如果未能解决你的问题,请参考以下文章

将 AWS cloudfront 放在 ec2 前面会引发 502 错误

https 为 AWS EC2 Ubuntu 实例引发 ERR_SSL_PROTOCOL_ERROR

通过HTTPS和Load Balancer通过自己的域访问AWS EC2 Webserver

AWS Application Load Balancer HTTP到HTTPS与EC2实例

如何将 godaddy ssl 证书添加到托管在 aws ec2 上的站点

需要 AWS Windows EC2 实例的有效证书。 Amazon Certificate manager 是不是为 EC2 提供证书?