AWS Elastic Beanstalk 负载均衡器 SSL CloudFront Angular Spring Boot

AWS Elastic Beanstalk Loadbalancer SSL CloudFront Angular SpringBoot

使用 SSL 和路由 53 配置在 Elastic Beanstalk 上部署 Springboot 并在 cloudFront 上部署 angular。

配置:

  1. 我在 AWS 的 Route 53 上有一个域,还创建了一个来自 AWS cm 的 public 证书。

  2. 我在带有负载均衡器 (LB) 的 Elastic beanstalk 上 Spring 启动。 LB 在 80 和 443 处有监听器。443 配置了我从 aws Cert Manager 创建的 SSL。我的 LB 安全组也为 https 配置了入站规则。我已经部署了我的 jar,它正在这个 URL: http://waprodservice-env-1.eba-kzqan9yr.us-east-1.elasticbeanstalk.com/

    服务
  3. 我的 angular 应用程序有 s3 存储桶,静态 Web 托管在 http://waapp.s3-website.ap-south-1.amazonaws.com . I have also configured the cloud front with the SSL that I created (Same as used in EB). I have also created a A record in route 53. All is well till now, I can access my domain and I can see my angular app from my domain name www.example.com,安装了证书锁符号。

问题:

在使用 ng build --prod 构建我的 angular 应用程序时,我将 env-prod 文件中的基础 url 更改为 http://waprodservice-env-1.eba-kzqan9yr.us-east-1.elasticbeanstalk.com/ 我的 spring 引导正在服务。当我访问 www.example.com(前端)时,在 API 调用后,我收到 ERR_CERT_COMMON_NAME_INVALID 消息作为响应。我知道我的证书公用名不匹配,我尝试打开证书并能够在前端和后端 URL 中看到公用名 example.com 并且颁发者是 amazon.com。我不知道有什么不匹配的。当我访问后端 EB url 时,它在浏览器上显示不安全。但是当我从 EB 访问某些特定的 public 端点时,它甚至可以从 https link 获取我需要的数据。 ->https://waprodservice-env-1.eba-kzqan9yr.us-east-1.elasticbeanstalk.com/public/astrologer .

仅供参考,我通过提供文档中提到的 *.myexample.com、myexample.com 等值来创建证书。

缺少哪些配置?没有其他 Whosebug 帖子有帮助。大部分都试过了。

您应该将自定义域名设置为与您的 ACM 证书匹配的 Elastic Beanstalk 环境。按照您的示例,设置类似 api.myexample.com

为此,您只需在环境负载均衡器配置中添加一个指向默认进程的 https 侦听器,然后将 ACM 证书附加到侦听器(它们应该位于同一区域)

然后添加 A 记录以将 api.example.com 路由到 Elastic Beanstalk 环境

这应该可以解决 ERR_CERT_COMMON_NAME_INVALID

的问题

P.S 您还应该在负载均衡器中设置从端口 80 到 443 的重定向

非常感谢@ARBERMEJO。

所以,这就是答案。将我的 angular 构建上传到 s3 后,我使用该 s3 URL 创建了一个 CloudFront,如许多 youtube 视频所示。然后对于后端 EB,对于配置,检查上面,最后一部分是,我必须在我的域的托管区域中创建一个 A 记录。检查图片。 enter image description here

我必须在我的第二行中添加 api.mydomain.com(只需在记录名称中键入 API)并将流量路由到图中所示的负载均衡器。

神奇的部分是:您应该从您的 ANGULAR 产品构建基础 URL 调用 https://api.mydomain.com。这在很多教程中都没有提到。

如果你从前端调用你的 EB link,在我的例子中是 https://waprodservice-env-1.eba-kzqan9yr.us-east-1.elasticbeanstalk.com/ ,它会从 backend/EB LB 抛出 SSL 通用名称错误(不确定是哪个。) .