我正在尝试在我的应用程序中设置 HTTPS,它包含一个前端(随 CloudFront 分发的 S3 存储桶)和一个后端(Elastic Beanstalk 中的 node.js 应用程序)。
对于 CloudFront 部分,我在北弗吉尼亚州创建了一个 SSL 证书(显然我在这里没有选择)并且我在 CloudFront 分发中进行了绑定(bind)。它有效,我的应用程序通过 HTTPS 提供服务。
对于 Elastic Beanstalk 部分,我在爱尔兰(托管我的 EBS 应用程序的地方)创建了一个 SSL 证书,并使用端口 443 将该证书绑定(bind)到 EBS 负载均衡器。它有效,我可以使用 HTTPS 访问我的服务器 postman 。
但是,当我的前端尝试对后端进行 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 证书
- 使用负载均衡器,使用
关于amazon-web-services - 无法使 HTTPS 在 CloudFront 和 Elastic BeanStalk 之间工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58125244/