在 ACM 中为 Elastic Beanstalk 后端请求证书

Posted

技术标签:

【中文标题】在 ACM 中为 Elastic Beanstalk 后端请求证书【英文标题】:Request a certificate in ACM for Elastic Beanstalk backend 【发布时间】:2018-08-13 13:28:32 【问题描述】:

我一周前才开始使用 AWS。我通过 Elastic Beanstalk 在 Docker 容器中部署了 NodeJS 后端。以及通过 CloudFront 在 S3 中的前端 Angular5 应用程序。

我在 GoDaddy 上购买了一个域名并将其配置为指向我的 CloudFront Angular5 应用程序。我还为该域生成了一个 SSL 证书(用于前端)。但是,由于后端不安全,来自前端应用的所有请求都被阻止。

因此,据我了解,下一步是为 ElasticBeanstalk NodeJS 后端配置 HTTPS。

我找到了有关该主题的各种文章。但他们都假设我已经颁发了证书。

问题是,当我尝试通过 ACM 为 Elastic Beanstalk 给我的 URL (my-website.eu-west-2.elasticbeanstalk.com) 请求证书时,请求被拒绝并出现以下错误:

Request failed The status of this certificate request is "Failed". Additional verification required to request certificates for one or more domain names in this request.

在这种情况下我该怎么办?甚至可以使用 aws 提供的 URL(如 elastic beanstalk 提供的 URL)来请求 SSL 证书吗?

抱歉,如果我的术语不是很正确。我对所有这些东西都很陌生。

【问题讨论】:

【参考方案1】:

您不能为 Amazon 域(amazonaws.com、elasticbeanstalk.com 等)注册 SSL 证书

如果您想对 Elastic Beanstalk 应用程序(内部或外部)使用 HTTPS,则必须使用自己的域。

    向 DNS 注册商注册域。 通过 ACM 为该域请求 SSL 证书。 将该 ACM 证书分配给您的 Elastic Beanstalk 应用程序。 将您的域指向 Elastic Beanstalk 应用程序,CNAME 用于外部 DNS,CNAME 或 ALIAS 用于 Route 53。 通过您的域名访问 EB 应用程序,而不是通过 elasticbeanstalk 分配的地址。

【讨论】:

这里是不是少了一个步骤?就像添加 Route 53 域,然后将 elasticbeanstalk-assigned 作为别名添加到 Route 53?【参考方案2】:

是的,正如马特·豪泽所说,这是不可能的。我只是想知道我是否应该获得另一个域名。

我最终所做的非常简单。我使用 route53 创建另一个别名记录,其 URL 为 api.my-website.com,指向我的 Elastic Beanstalk 后端。

然后,我使用 ACM 为 api.my-website.com 和 (www.)my-website.com 颁发了两个单独的 SSL 证书,以在前端和后端启用 HTTPS,并将它们相应地附加到 ElasticBeanstalk 和 CloudFront。 AWS 提供的服务似乎非常简单。

结果如下:https://my-next-movie.com

我会把它留在这里,以防有人和我一样陌生。

【讨论】:

以上是关于在 ACM 中为 Elastic Beanstalk 后端请求证书的主要内容,如果未能解决你的问题,请参考以下文章

在 Docker 中为 AWS Elastic Beanstalk 构建期间访问 .env 变量

如何在 AWS 中为 Elastic Beanstalk 设置应用程序负载均衡器

如何在 Elastic Beanstalk 配置文件中为 ALB 设置 HTTPS 重定向

如何在 Elastic Beanstalk 配置文件中为 ALB 设置 HTTPS 重定向

如何在 Elastic Beanstalk 中为 Auto Scaling EC2 实例配置触发器?

如何在 AWS Elastic Beanstalk 中为多个 grails 环境使用单个 .war?