amazon-web-services - 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://example向https://load-balancer-xxxxxx.us-east-1.elb.amazonaws.com发出请求
那是我的 DNS 配置:
注意:我已经安装了单域 SSL 证书。
解决方案
我已经在其他地方发布了这个答案,但我也想在这里发布
我已经花了大约一周的时间尝试自己解决这些问题——我使用的是 React 而不是 Angular,但步骤应该是相同的。
这是我解决它的方法,其中一些也可能对你有用。它最终主要是配置问题。
这里的关键之一是您需要已经拥有一个域,并且您需要能够修改域的 DNS。大多数主机将允许您这样做。所以我拥有www.example.com
,我需要做的是创建一个CNAME
DNS 记录以路由ops.example.come
到 my-site.my-aws-region-1.elasticbeanstalk.com
然后,当我在 AWS Cert Manager 中创建我的 SSL 证书时,我给它起的名字是,ops.example.com
但理论上*.example.com
也可以。
然后,最终成为整个事情的关键是,为了使 HTTPS 工作,您的负载均衡器必须在 443 上侦听 HTTPS,并在 80 上通过 HTTP 路由到实例。
亚马逊试图告诉我这一点,但因为我是个菜鸟,而且因为他们的教程是我整个职业生涯中读过的最糟糕的教程,他们实际上并没有将你的任何安全端口暴露给互联网。这实际上很好,因为您的流量一直被加密到负载均衡器,然后在此之后,即使它不再是 HTTPS,它也已经在亚马逊的服务器上,因此它的安全性并没有降低。
希望这里有帮助!
推荐阅读
- python - 使用 google ads API 将受众群体列表添加到广告系列
- java - 如何使用java selenium在jsp页面中点击vue js呈现的按钮
- javascript - 社区可视化 | 违反内容安全政策指令 img-src https://datastudio.google.com
- python - Tensorflow 1.14 没有提供梯度
- linux - 等待 axios.post(
) 停顿近一分钟,但仅在 Linux 上? - scala - 在数据集的情况下如何处理新对象实例化?
- sql - Hive 选择查询返回前 100 个语法错误?
- android - 如何让 Google Mobile Vision 不断尝试自动对焦?
- vue.js - 如何在 nuxt.js 中使用 oauth2?
- javascript - iframe 元素阻止可重复使用的顶部菜单