首页 > 解决方案 > ERR_CERT_COMMON_NAME_INVALID 在 Angular AWS APP 中

问题描述

我有一个 Angular - Spring Boot 应用程序。在后端(Spring Boot 应用程序)能够在 AWS 负载均衡器上使用 AWS 罐装 SSL 证书(“example.com”),该负载均衡器侦听 443 端口上的传入 https 流量。另一方面,在前端(Angular 应用程序)中,我有一个使用相同 SSL 证书(“example.com”)的 S3 站点。

当我转到https://example.com时,我的网站加载正常,并通过 url 显示 https 安全绿色标签(前端使用也使用 SSL 证书(“example.com”))。

但是,当我的前端转到负载均衡器的地址时,它看起来像:

https://load-balancer-xxxxxx.us-east-1.elb.amazonaws.com

换句话说,当我的前端向后端请愿时,我收到以下错误:

net::ERR_CERT_COMMON_NAME_INVALID

然后是由于我的网站的认证 url 不包含域 *.amazonaws.com 导致的错误吗?如果这是原因。如何防止浏览器显示 ERR_CERT_COMMON_NAME_INVALID?如果有必要,前端将从https://examplehttps://load-balancer-xxxxxx.us-east-1.elb.amazonaws.com发出请求

那是我的 DNS 配置:

在此处输入图像描述

注意:我已经安装了单域 SSL 证书。

标签: amazon-web-servicesrestapisslweb-applications

解决方案


我已经在其他地方发布了这个答案,但我也想在这里发布

我已经花了大约一周的时间尝试自己解决这些问题——我使用的是 React 而不是 Angular,但步骤应该是相同的。

这是我解决它的方法,其中一些也可能对你有用。它最终主要是配置问题。

这里的关键之一是您需要已经拥有一个域,并且您需要能够修改域的 DNS。大多数主机将允许您这样做。所以我拥有www.example.com,我需要做的是创建一个CNAMEDNS 记录以路由ops.example.comemy-site.my-aws-region-1.elasticbeanstalk.com

然后,当我在 AWS Cert Manager 中创建我的 SSL 证书时,我给它起的名字是,ops.example.com但理论上*.example.com也可以。

然后,最终成为整个事情的关键是,为了使 HTTPS 工作,您的负载均衡器必须在 443 上侦听 HTTPS,并在 80 上通过 HTTP 路由到实例。

亚马逊试图告诉我这一点,但因为我是个菜鸟,而且因为他们的教程是我整个职业生涯中读过的最糟糕的教程,他们实际上并没有将你的任何安全端口暴露给互联网。这实际上很好,因为您的流量一直被加密到负载均衡器,然后在此之后,即使它不再是 HTTPS,它也已经在亚马逊的服务器上,因此它的安全性并没有降低。

希望这里有帮助!


推荐阅读