无法使 HTTPS 在 CloudFront 和 Elastic BeanStalk 之间工作

Cannot make HTTPS work between CloudFront and Elastic BeanStalk

我正在尝试在我的应用程序中设置 HTTPS,它包含一个前端(随 CloudFront 分发的 S3 存储桶)和一个后端(node.js Elastic Beanstalk 中的应用程序)。

对于 CloudFront 部分,我在北弗吉尼亚州创建了一个 SSL 证书(显然我在这里没有选择)并且我在 CloudFront 分发中进行了绑定。它有效,我的应用程序是通过 HTTPS 提供的。

对于 Elastic Beanstalk 部分,我在爱尔兰(托管我的 EBS 应用程序的地方)创建了一个 SSL 证书,并使用端口 443 将该证书绑定到 EBS 负载均衡器。它有效,我可以通过以下方式访问我的服务器使用 Postman 的 HTTPS。

但是,当我的前端尝试对后端进行 API 调用时,出现此错误:

我想我在创建证书时犯了一个错误,但我找不到它。我给了两个证书相同的一组 CNAMES,我不确定我是否应该这样做。

编辑:

更新前端后我得到了完全相同的错误,因此它指向负载均衡器的 DName(也映射到 Route 53 的子域)。

CloudFront 正在尝试从您的负载均衡器加载 HTTPS URL。我假设您已为负载均衡器分配了 SSL 证书。负载均衡器上 SSL 证书的域名需要与 CloudFront 请求的域名相匹配。

例如,如果负载均衡器的 SSL 证书类似于 beanstalk.mydomain.com,则 CloudFront 需要为 https://beanstalk.mydomain.com 发出请求。 CloudFront 给您的错误是负载均衡器提供的 SSL 证书的域名与域名 djumbo-back-debug.eu-west-1.elasticbeanstalk.co.

不匹配

您需要进行如下设置:

  • DNS 名称 www.mydomain.com 指向 CloudFront 分发

    • 配置为服务 www.mydomain.com
    • 为域www.mydomain.com配置了 SSL 证书
    • 配置从原点拉取beanstalk.mydomain.com
  • DNS 名称 beanstalk.mydomain.com 指向 Elastic Beanstalk 应用程序

    • 使用负载均衡器,使用 beanstalk.mydomain.com
    • 的 SSL 证书