【发布时间】:2020-12-25 23:24:55
【问题描述】:
我购买了一个名为 studileih.de 的域,然后我在 firebase 上部署了我的 Angular 前端:https://studileih-ceb70.web.app/ 并从我的域 studileih.de 重定向到了 firebase URL。
然后我将我的 Spring Boot 后端部署到 AWS Elastic Beanstalk 上:http://studileih1.eu-central-1.elasticbeanstalk.com/
-> 问题:由于firebase 上的前端使用https,而AWS 上的后端使用http,我得到了Mixed content error。前端无法加载任何后端数据。
所以我尝试通过在AWS Certificate Manager (ACM) 中为我的后端创建 SSL 证书并将其添加到我的 Elasting Beanstalk Load Balancer 来解决这个问题。这很有效,我现在至少可以建立从前端到后端的连接。
但是现在每当向我的后端发送请求时,我都会收到此错误:
当我单击“接受风险并继续”一次时,它工作正常并且我的所有后端数据都已加载。但我不能要求我的用户这样做。
(您可以通过以下方式尝试:https://studileih1.eu-central-1.elasticbeanstalk.com/products 并单击“高级”->“接受风险并继续”(如果你敢 ^^) 完成后,点击studileih.de,它现在将加载后端数据。)
我知道问题的存在是因为在创建 SSL 证书时,我输入了 studileih.de 作为证书所针对的域。我想我必须为studileih1.eu-central-1.elasticbeanstalk.com 创建一个 SSL 证书。 但是当我尝试为studileih1.eu-central-1.elasticbeanstalk.com 创建 SSL 证书时:
我从 ACM 收到此错误:
如何为 Elastic Beanstalk URL 创建 SSL 证书?
附言我还尝试为我的 firebase URL https://studileih-ceb70.web.app/ 颁发证书,但默认情况下这个证书已经使用 Https。我也找不到如何在 Firebase 控制台中通过 DNS/Email 验证 ACM 请求。但我认为我需要在 stuileih1.eu-central-1.elasticbeanstalk.com 获得 Elastic Beanstalk 后端证书,而不是 firebase 前端证书,对吧?
p.p.s.我真的不需要使用https,所以一个解决方案是让firebase使用http而不是https,但我找不到任何关于如何做到这一点的信息。
更新:
我添加了一个名为api.studileih.de 的子域(即时访问被spring security 阻止,因为您没有登录到我的站点,但您可以使用api.studileih.de/products 对其进行测试,因为此API 无需登录即可访问) .然后我按照 Mark B 的建议,通过向子域添加 CNAME 将该子域重定向到我的 AWS 负载均衡器:
(那里不能改成英文,抱歉)
这是我的负载均衡器:
我尝试将 DNS-Name 作为 A-Record 放入我的子域,但那里只能输入 IP4 地址,所以我将其输入为 CNAME。我也尝试找出负载均衡器的 IP 地址,但负载均衡器没有静态 IP 地址。
不幸的是,这种使用子域和 CNAME 的方法不起作用,所以我仍在寻找解决方案...
(这是设置 A-Record 的菜单。您只能在此处输入 IP 地址:)
【问题讨论】:
标签: amazon-web-services ssl https amazon-elastic-beanstalk aws-certificate-manager