【问题标题】:How to enable HTTPS on AWS Elastic Load Balancer?如何在 AWS Elastic Load Balancer 上启用 HTTPS?
【发布时间】:2017-05-10 01:44:09
【问题描述】:

我正在尝试将 HTTPS 添加到我的 AWS Elastic Load Balancer。

我通过 AWS Certificate Manager 获得了证书:

我在负载均衡器上启用了 HTTPS:

我确保负载均衡器的安全组在 443 上接受 0.0.0.0/0:

当通过 HTTP 访问我的域时,它可以工作。

但是,当尝试使用 HTTPS 加载我的域时,它不起作用 ("ERR_CONNECTION_TIMED_OUT")


编辑和更新:

这是我试图让 HTTPS 工作的 API,不一定是域。域服务是来自 S3 的静态文件(角度 Web 应用程序),它是角度调用负载均衡器(将请求传输到 EC2 实例)以获取数据库数据。

当 Angular 通过 HTTP 直接通过负载均衡器域名调用 api 时,请求会按预期响应。

当 Angular 通过 HTTPS 进行相同的 api 调用时,我收到以下错误:

【问题讨论】:

  • 一切看起来都正确。您确定您的域指向负载均衡器而不是直接指向实例吗?
  • @MarkB 感谢 Mark B,这是一个很好的考虑……我不确定!让我来验证一下!
  • @MarkB 感谢 Mark B,我已经用更多信息更新了我的问题。角度 js 在其 api 请求中直接调用负载均衡器的域名 - 并且在通过 HTTPS 时失败。

标签: amazon-web-services networking https elastic-load-balancer aws-certificate-manager


【解决方案1】:

您为您的域名启用了 HTTPS,而不是亚马逊拥有的 ELB 域。您只能为您拥有的域创建 SSL 证书。您不能为“mydomain.com”启用 SSL,然后期望它以某种方式在完全不同的域上工作。您需要更改 AngularJS 代码以通过您创建 SSL 证书的自定义域名引用 API。您需要将域指向 ELB,并在 ELB 上安装域的 SSL 证书。

【讨论】:

  • 哈,我想这很明显。感谢您帮助我看到森林(为了树木)。
【解决方案2】:

Mark B 提供了几乎完整的解决方案。

由于我的 javascript 代码通过 AWS 提供的 DNS 名称调用弹性负载均衡器 (ELB),我无法为我不拥有的域获取 SSL 证书。

正如 Mark B 所指出的,我需要将我的 javascript 代码指向我拥有的域,并拥有 SSL 证书。

所以我可以创建我拥有的域的子域(例如api.mydomain.com),然后指向 ELB。

A 记录(例如指向 IP 的域)看起来可以满足需要。

但是,A 记录不能指向 ELB,因为它的 IP 可能会改变。

缺少的步骤是使用 AWS Route 53 将 A 记录指向代表我的 AWS Elastic Load Balancer 的别名(Route 53 允许您这样做)。

【讨论】:

    猜你喜欢
    • 2015-04-14
    • 2017-06-29
    • 1970-01-01
    • 2016-12-26
    • 2015-10-24
    • 2013-11-27
    • 2014-09-28
    • 2017-03-10
    • 2020-08-31
    相关资源
    最近更新 更多