【问题标题】:HTTPS for each EC2 instance in an Auto Scaling groupAuto Scaling 组中每个 EC2 实例的 HTTPS
【发布时间】:2019-04-24 06:03:27
【问题描述】:

如何为 Auto Scaling 组中的每个单独的 EC2 实例设置 HTTPS?

通常,组前面的负载均衡器会通过持有 SSL/TLS 证书来处理此问题,但在我的架构中没有负载均衡器;相反,客户端查询目录服务,该服务为他们提供实例的 IP 地址(实例通过 redis 服务器的 pub/sub 功能通知目录它们的存在)。因此,EC2 实例本身必须携带 SSL/TLS 证书。由于这是一个 Auto Scaling 组,因此实例可能随时弹出/不存在,因此无法手动分配证书。我知道 AWS 可以从它们的池中为每个实例分配一个默认的公共 IP 地址,以及一个通用的 DNS 名称,例如 ec2-203-0-113-25.compute-1.amazonaws.com,但它们没有附带证书。

那么,鉴于它们的默认 DNS 名称与随机名称一样好,我如何让这些实例拥有证书?我在想也许我可以以某种方式将它们设置在自定义父域下,并让每个实例随意声明一个唯一的子域,从而允许他们使用覆盖父域的通配符证书,但我不太确定那是怎么回事完成。

【问题讨论】:

  • 您为什么不在 AutoScaling 组中使用 ELB?这会为您处理所有事情,包括将请求定向到实例,并显着简化您的流程;您甚至可能不需要查询该目录服务和/或 Redis,因为 ELB 将是静态的,并且请求可以直接到达那里 - ELB 实际上可以为您节省 $。
  • 如果您继续使用当前架构,则需要获取自己的证书并确保每次使用 ASG 启动新实例时都已安装它,然后您将 b) 需要设置一个内部 DNS 并在每次新实例启动并声明一个新域时更新该 DNS 以指向特定实例,c)您需要更新目录中的“指针”和指向旧的和新的 Redis , 域,以便在查询时正确解析。

标签: amazon-web-services amazon-ec2 https ssl-certificate


【解决方案1】:

您不能在 EC2 实例上使用 Amazons ACM 证书。您必须提供自己的证书。例如对 *.example.com 有效的通配符证书。然后,您将子域分配给 Route53 中的实例,并将其保存在您的 Redis 数据库中。

我不建议使用自定义机器映像,从长远来看会导致巨大的维护开销。

在启动时使用启动脚本或更专业的 Opsworks 设置机器,您可以利用厨师或木偶的力量来设置和运行您的服务。 https://aws.amazon.com/opsworks/

编辑,澄清 route53 的使用

在实例注册例程中 或者在配置或部署事件接收中使用 opsworks 时,您可以利用 AWS Route53 API 创建子域,例如实例名称。据我所知,子域的数量没有限制。

更多关于 opsworks 事件的详细信息https://docs.aws.amazon.com/opsworks/latest/userguide/workingcookbook-events.html

更多关于Route53的详情https://docs.aws.amazon.com/Route53/latest/APIReference/Welcome.html

【讨论】:

  • 你在 Route53 中为你的实例分配子域这是我不明白的部分,因为我以前从未使用过 Route53。他们可以在启动时向 Route53 请求子域吗? Route53 是否需要有一组预定义的子域可供选择,还是可以增量计算?
  • 更新了更多细节的答案
【解决方案2】:
  1. 您需要为启动配置创建自定义 AMI。
  2. 您必须配置您的 SSL 证书。
  3. 只要您的实例启动,就会出现 SSL。
  4. 以及您为哪个应用程序运行,您必须编写重写规则。 例如 Nginx http 到 https 的重定向。
server {
           listen         80;
           server_name    www.example.org;
           rewrite        ^ https://$server_name$request_uri? permanent;
        }

        server {
           listen         1443;
           server_name    www.example.org;
       }

【讨论】:

    猜你喜欢
    • 2021-08-25
    • 2021-02-09
    • 2020-11-12
    • 2018-07-13
    • 2017-07-13
    • 2020-12-06
    • 2018-09-30
    • 2021-08-13
    • 2019-06-10
    相关资源
    最近更新 更多