Amazon EC2中的HTTPS设置


Answers:


76

首先,您需要打开HTTPS端口(443)。为此,请转到https://console.aws.amazon.com/ec2/,然后单击Security Groups左侧的链接,然后创建一个同时具有HTTPS的新安全组。然后,只需更新正在运行的实例的安全组或使用该组创建一个新实例。

完成这些步骤之后,您的EC2工作就完成了,这全都是应用程序问题。


15
我能够为实例所使用的安全组添加一个新的端口443规则,它甚至不需要重新启动即可开始工作。
德米特里·埃菲缅科

9
you can't change a security group of a running instance, even rebooting-我认为自发布此答案以来,该限制已被删除。
Yuriy Nakonechnyy 2014年

11
您不需要更改安全组,可以Edit inbound rules
Khoi 2014年

8
@ nikhil84,通过在安全组中添加HTTPS,您仅在步骤1上打开了计算机上的端口443。第二,您需要在该计算机上设置服务器以侦听443端口(而不是默认的HTTP端口80)并接受HTTPS通信。您使用哪个服务器?
Yuriy Nakonechnyy

4
@ nikhil84,请遵循此处列出的准则:digitalocean.com/community/tutorials/…在Apache HTTPD上设置https
Yuriy Nakonechnyy

40

该答案主要针对那些在另一个站点(如GoDaddy)购买域名并想通过证书管理器使用Amazon免费证书的人。

此答案使用的是Amazon Classic Load Balancer(付费),请在使用前查看价格


步骤1-向证书管理器申请证书

转到证书管理器>请求证书>请求公共证书

在域名将添加myprojectdomainname.com*.myprojectdomainname.com去下一步

选择电子邮件验证并确认并请求

打开您收到的电子邮件(在您购买域的电子邮件帐户上)并确认请求

之后,检查myprojectdomainname.com和的验证状态 *.myprojectdomainname.com是否成功,如果成功,则可以继续执行步骤2

步骤2-为负载均衡器创建安全组

在EC2上,转到“安全组”>“创建安全组”,然后添加http和https入站

它将类似于: 在此处输入图片说明

第3步 -创建负载均衡器

EC2>负载均衡器>创建负载均衡器>经典负载均衡器(第三选项)

在内部创建LB-项目的vpc在Load Balancer协议上添加Http和Https 在此处输入图片说明

下一步>选择退出的安全组

选择您在上一步中创建的安全组

下一步>从ACM选择证书

选择步骤1的证书

下一个>

在运行状况检查中,我使用了ping路径/(一个斜杠代替/index.html)

步骤4-将您的实例与负载均衡器的安全组关联

EC2>实例>单击您的项目>操作>网络>更改安全组

添加您的负载均衡器的安全组

第5步

EC2>负载均衡器>单击已创建的负载均衡器>复制DNS名称(A记录),类似于 myproject-2021611191.us-east-1.elb.amazonaws.com

转到Route 53>路由区域>单击域名>转到记录集(如果您的域不在此处,请使用Domain Name: myprojectdomainname.com和创建托管区域Type: Public Hosted Zone

检查您是否具有记录类型A(可能不是),创建/编辑名称为空的记录集,类型A,别名为Yes,并定位已复制的dns

还创建一个新的记录集,类型为A,名称*.myprojectdomainname.com,别名是,并定位您的域(myprojectdomainname.com)。这样就可以通过www.myprojectdomainname.com和subsite.myprojectdomainname.com访问您的站点。注意:您需要配置反向代理(Nginx / Apache)来这样做。

在NS上,复制要在下一步中使用的4个名称服务器值,它将类似于:

ns-362.awsdns-45.com ns-1558.awsdns-02.co.uk ns-737.awsdns-28.net ns-1522.awsdns-62.org

转到EC2>实例>并复制IPv4公共IP

第6步

在您购买了域名的域名注册网站上(以我的情况为GoDaddy)

将路由更改为,http : <Your IPv4 Public IP Number>然后选择带屏蔽的转发

将名称服务器(NS)更改为已复制的4个NS,这可能需要48个小时才能生效


如果要使用https,是否必须使用负载均衡器?
Curtis

我做了所有这些事情,但是当我在浏览器中访问我的域时,我得到了ERR_CONNECTION_TIMED_OUT
Curtis,

1
我需要使用端口80上的新目标组制作一个负载均衡器,然后编辑侦听器以使用端口80。现在可以工作。谢谢。
Curtis

1
@Curtis负载均衡器不是使用https的唯一选项,您还可以在EC2内部配置“让加密”
DigaoParceiro

@DigaoParceiro您对第5步做了什么复制的DNS名称?
Prashant

9

Amazon EC2实例只是虚拟机,因此您可以按照在任何服务器上进行设置的方式来设置SSL。

您没有提到您使用的平台,因此很难提供更多信息。


您好-我正在运行T2.Micro Amazon Linux EC2实例。我正在使用node.js来支撑服务器。我正在侦听服务器脚本中的端口443,并且将安全组配置为端口443。要启用HTTPS,我还需要做什么?我需要证明书,对吗?很难找到不基于Elastic Beanstalk的体面信息。
Stephen Tetreault

2
@ SMT-查看免费和自动更新证书的letsencrypt.org。关于如何使用node进行设置,有很多信息(通过google)。您不需要执行其他任何特定于AWS / EC2的操作。
Geoff Appleford,

2
谢谢回复!实际上,前几天我已经使它工作了,并简化了一些步骤。如果有人从将来开始阅读这篇文章:github.com/MSCHF/aws-ec2-node-npm-setup
Stephen

5

一个老问题,但值得一提的是答案中的另一个选择。如果您的域的DNS系统已在Amazon Route 53中定义,则可以在EC2之前使用Amazon CloudFront服务,并向其附加免费的Amazon SSL证书。这样,既可以使用CDN来加快内容交付速度,又可以使用HTTPS协议保护域,这将使您受益。


是否有参考文献或博客提到了实现此目标的步骤?
萨拉·雅达夫(Saurabh Yadav)

在此视频中,atiqur rahman使用Amazon Certificate Manager获得ssl证书,然后他使用EC2实例配置了云前端。在自动启用配置http / 2之后。
Sachithra Dilshan


2

使用Elastic Load Balacing,它在负载均衡器上支持SSL终止,包括卸载应用程序实例中的SSL解密并提供SSL证书的集中管理。


15
您不仅仅使用ELB来提供SSL,这实际上是一个误导性的答案。您的服务器无论如何都需要提供SSL,因此,如果不需要负载平衡器,则仅是额外的费用。它也是软件中的SSL终止,因此负载平衡器和服务器之间的SSL是另外一个步骤,影响性能。
汤姆斯(Thomas)坦克引擎

1
我同意你的评论。它将增加额外的成本并影响性能。我们不知道他们对服务器负载的确切要求,因此这仍然是一个可行的方法。但是我不理解您的言论“无论您的服务器需要提供SSL”,为什么需要这样做?负载平衡器还包括卸载SSL。谢谢。
Peter Hulsen'3

2
是的,没错。您可以使用它以简单的方式提供SSL。我只是在想实例仍然具有公共DNS值,用户可以出于任何原因直接访问它们。如果发生这种情况,很可能是您也想强制使用SSL。
托马斯坦克引擎

我知道此评论很晚,但是据我了解,如果您想使用注册域名,则必须使用ELB,因为EC2 IP被视为“非永久性”,因此无法使用SSL证书。另一方面,如果您仅使用Amazon提供的DNS,则可能不需要ELB,我没有检查。
hexicle


0

我发现的最佳资源之一是使用加密,您不需要ECB实例的ELB或cloudfront即可拥有HTTPS,只需遵循以下简单说明: 加密 登录到服务器并按照链接中的步骤进行操作。

如其他人所述,通过编辑安全组打开端口443也很重要

您可以通过更改此链接中的站点名称来查看证书或任何其他网站的证书

请不要忘记它仅在90天内有效

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.