【问题标题】:Gatsby site serving on EC2 with pm2 node with aws classic load balancer needs httpsGatsby 站点在 EC2 上使用 pm2 节点和 aws 经典负载均衡器服务需要 https
【发布时间】:2020-05-26 21:19:22
【问题描述】:

我在开发模式下运行 Gatsby 站点作为 EC2 上的开发服务器,负载均衡器从端口 80 指向 8000。我在我的域 dns 上设置了一个 cname 以指向负载均衡器,这工作正常。但是我需要将此页面显示为 sanity.io 中的 iframe 作为网络预览,并且它需要 https。

我已经阅读了这个https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-https-ssl-load-balancer.html 并且大部分内容都非常简单。

到目前为止,我所做的是在负载均衡器上为 443 https 创建了一个侦听器,并将 https 443 添加到安全组中。我已成功向与 aws 一起使用的子域颁发了证书,并将其附加到负载均衡器侦听器。

Gatsby 有一篇关于开发模式的自定义证书的文章https://www.gatsbyjs.org/docs/local-https/#custom-key-and-certificate-files 我正在寻找的是证书文件、授权文件和密钥文件,以便在下面传递此命令

我在 aws 证书管理器中的什么位置可以找到这些文件。我认为这是我需要让 https 工作的最后一部分,如果我错了,请纠正我。

提前谢谢。

gatsby develop --https --key-file ../relative/path/to/key.key --cert-file ../relative/path/to/cert.crt --ca-file ../relative/path/to/ca.crt

这是我用来请求我的证书的过程,它说它已颁发 https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-public.html

但是如何将它与 gatsby 的自定义 https 命令一起使用?

有一个导出选项,但它只表示私钥。我需要创建一个私钥然后才能导出我需要的这些文件吗?

我什至需要在 gatsby 这边运行 https。我使用 apache 观看了一个视频,并且没有对 apache 服务器进行任何更改以使 https 与负载平衡器一起工作。

这是我的负载均衡器监听器的屏幕截图

这是我的安全组的图片

如果我为 gatsby 开发运行 --https,它会破坏我的网站,我无法再通过负载均衡器或端口 8000 访问它。所以不知道在这里做什么。

【问题讨论】:

  • 对此我仍然很困惑。

标签: amazon-web-services ssl amazon-ec2 gatsby amazon-elb


【解决方案1】:

我建议不要加密您的 ELB 和 EC2 实例之间的连接。如果您的 EC2 实例不可公开访问,而只能通过负载均衡器访问,则最佳做法是终止负载均衡器上的 SSL 连接。无需在 AWS VPC 内(即 ELB 和目标实例之间)加密 HTTP 请求。

您可以创建一个同时侦听 HTTP (80) 和 HTTPS (443) 端口的负载平衡器。如果您指定 HTTPS 侦听器将请求发送到端口 80 上的实例,负载均衡器将终止请求,并且从负载均衡器到实例的通信不会加密。 [1]

有一些讨论(例如在 Kevin Burke 的博客上)是否有必要加密 VPC 内的流量。 [2] 但是,大多数人可能没有这样做。

这对您意味着什么:为您的目标使用与以前相同的实例协议:两个侦听器通过端口 8000 进行 HTTP。不要为您的 Gatsby 服务设置 SSL。请改用普通的 HTTP 服务器配置。在负载均衡器上使用 SSL 终止时,无需更改 ELB 目标。

参考文献

[1]https://docs.aws.amazon.com/elasticloadbalancing/latest/classic/elb-create-https-ssl-load-balancer.html
[2]https://acloud.guru/forums/aws-certified-security-specialty/discussion/-Ld2pfsORD6ns5dDK5Y7/tlsssl-termination?answer=-LecNy4QX6fviP_ryd7x

【讨论】:

  • 抱歉,使用普通的 HTTP 服务器配置是什么意思?那么我该如何运行我的 gatsby 服务器呢?您的意思是设置指向 gatsby 服务器的 nginx 服务器之类的东西吗?终止负载均衡器上的 https 连接是什么意思?我不太确定从这个答案中我的第一步是什么,尽管很清楚,我仍然迷路了。
  • 我认为你的意思是 http 服务器配置不要使用 https 作为 gatsby。好的,我已经这样做了。所以你说我应该为负载均衡器改变什么,你提到两个听众都做http,这到底意味着什么。端口 443 到 8000,因为 http 不是 https?
  • 终于明白你的意思了。非常感谢它现在正在工作。
猜你喜欢
  • 2018-11-03
  • 2020-08-23
  • 2021-12-19
  • 2018-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 2015-01-13
相关资源
最近更新 更多