Gatsby网站服务于EC2上的pm2节点与AWS经典负载均衡器需要https。

问题描述 投票:0回答:1

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

我已经读过这个 https:/docs.aws.amazon.comelasticloadbalancinglatestclassicelb-create-https-ssl-load-balancer.html。 和大部分的是相当直接的大部分。

我已经做了什么,到目前为止,创建了一个监听器443 https的loadbalancer和添加https 443的安全组。

Gatsby有一篇关于开发模式的自定义证书的文章在这里。https:/www.gatsbyjs.orgdocslocal-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

这是我用来请求我的certficate的过程,它说它已经发出了。https:/docs.aws.amazon.comacmlatestuserguidegs-acm-request-public.html。

但我如何用gatsby的自定义https命令来使用它?

有一个导出选项,但它说只适用于私钥,我需要创建一个私钥,然后我就可以导出这些我需要的文件吗?我是否需要创建一个私钥,然后我就可以导出这些我需要的文件?

我是否需要在gatsby那边运行https。我看了一个使用apache的视频,没有对apache服务器进行任何修改,让https与loadbalancer一起工作。

下面是我的负载均衡器监听的截图。

enter image description here

这是我的安全组的图片

enter image description here

如果我运行 --https 对于gatsby开发,它打破了我的网站,我不能再通过负载平衡器或端口8000访问它。所以不知道该怎么做。

amazon-web-services ssl amazon-ec2 gatsby amazon-elb
1个回答
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.comelasticloadbalancinglatestclassicelb-create-https-ssl-load-balancer.html。 [2] https:/acloud.guruforumsaws-certified-security-specialtydiscussion-Ld2pfsORD6ns5dDK5Y7tlsssl-termination?answer=-LecNy4QX6fviP_ryd7x。

© www.soinside.com 2019 - 2024. All rights reserved.