首页 > 解决方案 > Amazon EC2 中子域的 HTTPS 设置

问题描述

目标:为我的项目设置 HTTPS,前端使用 React,后端使用 Express.js

进展:我已经通过 Cloudfront 和 route53 为我在 Amazon s3 中的 react 应用程序成功设置了 HTTPS。我通过 Route53将域名(example.com)附加到云端分发来做到这一点

问题:由于我的应用程序通过http://ec2-00-00-00.compute-1.amazonaws.com调用通过 Amazon EC2 托管的后端 express.js,我看到混合内容错误,因为前端应用程序 (https) 正在尝试访问 ec2 公共 dns,即 http。

我正在尝试找出为我的后端 EC2 服务器设置 HTTPS 的最佳方法:我尝试了 nginx - certbot 但它不起作用,因为我没有将域名附加到 ec2 公共 dns 地址。

我尝试创建一个子域api.example.com,使用 Amazon Certificate Manager 购买了一个证书,并尝试为 api.example.com 设置路由 53 cname 记录以指向 EC2 实例公共 IP。当我尝试通过 https 访问端点时,这也不起作用。我的安全组配置看起来正确。

我对使用负载均衡器和购买新域感到困惑,有人能指出我正确的方向吗?由于这是一个附带项目,我不想采用昂贵的方法,但我愿意尝试任何最佳实践。

提前致谢!

标签: amazon-web-servicesnginxamazon-ec2httpsamazon-route53

解决方案


Amazon Certificate Manager 并尝试为 api.example.com 设置路由 53 cname 记录以指向 EC2 实例公共 IP。

ACM 证书不能用于实例,只能用于 ELB、CF 发行版和 API 网关。因此,您应该在您的实例上使用来自第三方的 SSL 证书(非自签名)。您正确尝试了 nginx - certbot 组合,这是执行此操作的正确方法。因此,我会研究为什么 nginx - certbot 不起作用,特别是因为您已经拥有自己的域。


推荐阅读