我在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一起工作。
下面是我的负载均衡器监听的截图。
这是我的安全组的图片
如果我运行 --https
对于gatsby开发,它打破了我的网站,我不能再通过负载平衡器或端口8000访问它。所以不知道该怎么做。
我建议不要加密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。