如何为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名称与随机一样好,我如何获得证书呢?我想也许我可以以某种方式在自定义父域下设置它们并让每个实例随意声明一个唯一的子域,从而允许它们使用覆盖父域的通配符证书,但我不太确定它是怎么回事完成。
您不能在EC2实例上使用Amazons ACM证书。您必须提供自己的证书。例如通配符证书,对* .example.com有效。然后,将子域分配给Route53中的实例,并将其保存在Redis数据库中。
我不建议使用自定义机器映像,从长远来看会导致巨大的维护开销。
使用启动脚本或更专业的Opsworks在启动时设置计算机,您可以利用厨师或木偶的力量来设置和运行您的服务。 https://aws.amazon.com/opsworks/
编辑,澄清route53用法
无论是在实例注册例程中,还是在configure或deploy事件中使用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的更多细节
server { listen 80; server_name www.example.org; rewrite ^ https://$server_name$request_uri? permanent; } server { listen 1443; server_name www.example.org; }