AWS Elastic Beanstalk - 添加了 SSL 证书但仍然是 HTTPS 错误:SSL_ERROR_BAD_CERT_DOMAIN
Posted
技术标签:
【中文标题】AWS Elastic Beanstalk - 添加了 SSL 证书但仍然是 HTTPS 错误:SSL_ERROR_BAD_CERT_DOMAIN【英文标题】:AWS Elastic Beanstalk - SSL Certificate added but still HTTPS Error: SSL_ERROR_BAD_CERT_DOMAIN 【发布时间】: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 地址:)
【问题讨论】:
【参考方案1】:我知道问题存在,因为在创建 SSL 证书时,我 输入 studileih.de 作为证书的域。一世 认为我必须为 studileih1.eu-central-1.elasticbeanstalk.com。
您只能为您拥有的域创建 SSL 证书。您需要在 Elastic Beanstalk 负载均衡器上指向 studileih.de
的子域,例如 api.studileih.de
,然后将 SSL 证书附加到与该子域匹配的负载均衡器。
【讨论】:
谢谢你,这解决了 Firefox(桌面)中的问题。我现在在 URL 旁边有一个关闭的锁,当我单击它时,它会显示“连接安全”。在 chrome 和 edge 上,它显示“不安全”而不是锁,并且 url 的 https 被划掉。 但至少它加载了后端数据,而不再需要“接受风险”。但在 Opera 和移动设备(firefox 和 chrome)上,它仍然向我显示一个错误:NET::ERR_CERT_COMMON_NAME_INVALID 此外它说:“该服务器无法证明它是 studileih1.eu-central-1.elasticbeanstalk.com。这是安全的证书来自 studileih.de。” (从德语翻译) ssllabs.com/ssltest/analyze.html?d=studileih.de 显示 studileih.de 的 2 个证书(我没有删除第一个),但两者都被标记为“证书对域名无效” 在新添加的证书中,我同时添加了studileih.de
和api.studileih.de
。 api.studileih.de
指向负载均衡器的 CNAME。但是域studileih1.eu-central-1.elasticbeanstalk.com
没有出现在证书中的任何位置。也许这就是问题所在?但是负载均衡器属于studileih1.eu-central-1.elasticbeanstalk.com
后面的弹性beantalk/EC2服务器,我之前尝试将studileih1.eu-central-1.elasticbeanstalk.com
添加到证书请求中,但这总是导致请求失败(如我的帖子中所述)。跨度>
这是我的 Firefox-US 版本的完整错误消息:网站通过证书证明其身份。 Firefox 不信任此站点,因为它使用的证书对 stuileih1.eu-central-1.elasticbeanstalk.com 无效。该证书仅对以下名称有效:api.stuileih.de、stuileih.de 错误代码:SSL_ERROR_BAD_CERT_DOMAIN以上是关于AWS Elastic Beanstalk - 添加了 SSL 证书但仍然是 HTTPS 错误:SSL_ERROR_BAD_CERT_DOMAIN的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk CLI 安装错误