繁体   English   中英

如何在单个EC2实例上使用CloudFront时启动使用Amazon Certificate Manager安装的SSL证书?

[英]How to get an SSL certificate installed using Amazon Certificate Manager up on using CloudFront for a single EC2 instance?

我正在使用Amazon EC2实例托管我的Web应用程序。 EC2实例位于亚太地区。 我想使用Amazon Certificate Manager中的SSL证书。

对于上述情况,我必须选择Elastic Load Balancing选项或CloudFront。

由于我的实例位于亚太地区,因此我无法进行弹性负载平衡,因为负载平衡仅适用于美国东部(弗吉尼亚北部)地区的实例。

另一个选择是使用CloudFront。 如果我使用Amazon S3存储桶托管Web应用程序,则CloudFront选项会更容易。 但是我正在使用EC2实例。

我要求在美国东部(弗吉尼亚北部)地区获得ACM证书。

我继续使用CloudFront,并在源路径的源字段中输入了我的域名(example.com)。 我给出了应用程序目录(/ application)的位置,并填写了http和https端口。

部署CloudFront发行版时,我只能看到Web应用程序的默认自签名证书,而看不到ACM证书。

欢迎您提出意见和建议以解决此问题。 谢谢。

我继续使用CloudFront,并在来源字段中输入了域名(example.com),

这是不正确的。 来源必须是CloudFront可以用来联系EC2实例的主机名。 它不能是您的域名,因为一旦完成此设置,您的域名将直接指向CloudFront,因此CloudFront无法使用它来访问实例。

在这里,使用实例的公共DNS主机名,您将在控制台中找到它。 看起来像ec2-xxxx.aws-region.compute.amazonaws.com。

在原始路径中; 我给出了应用程序目录(/ application)的位置,

这也是不正确的。 原点路径应留空。 原始路径是您希望CloudFront 附加到每个请求的字符串。 如果将其设置为/foo并且浏览器请求/bar则您的Web服务器将看到请求进入/foo/bar页面。 可能不是您想要的。

并填写http和https端口。

在这里,您需要将源协议策略设置为“仅HTTP”。 除非您在服务器上拥有有效且未自签名的证书,否则CloudFront不会使用HTTPS与服务器建立后端连接。 浏览器与CloudFront之间的连接仍然可以是HTTPS,但是在实例上没有有效证书的情况下,CloudFront将拒绝在背面建立HTTPS连接。

此外,在“缓存行为”下,您将需要配置CloudFront以便将所有请求标头转发到原始服务器(这也会禁用缓存,因此您可能不希望这样做),或者至少需要将Host:标头列入白名单,以便您的原始服务器识别该请求。 添加您需要查看的任何其他标头,例如Referer

如果需要,请启用查询字符串转发。 否则,CloudFront会删除?your=query&strings=off_the_requests而您的服务器将永远不会看到它们。

如果您的站点使用cookie,请配置您需要CloudFront转发或转发所有cookie的cookie。

那应该已经配置了CloudFront发行版,但尚未在您的站点上发布。

部署CloudFront分配后,

这仅意味着CloudFront已将您的设置部署到了其在世界各地的所有边缘位置,并已准备好进行通信,而不是说它实际上将接收任何设置。

我只能看到该Web应用程序的默认自签名证书,而看不到ACM证书。

是的,因为您实际上并未将“ example.com”的DNS更改为指向CloudFront而不是您的Web服务器。

分发就绪后,您需要向其发送流量。 在Route 53中,找到您站点的A记录,该记录在框中将具有EC2实例的IP地址,并将“别名”单选按钮设置为“否”。 将其更改为“是”,然后从出现的别名目标列表中选择CloudFront分配。 保存更改。

现在...在旧的DNS条目的生存时间(TTL)计时器到期后,关闭浏览器( 所有浏览器窗口),闭上眼睛,用手指交叉,睁开眼睛,打开浏览器,然后访问您的网站。

...应通过带有ACM证书的CloudFront进行提供。

这听起来似乎很复杂,但是应该可以让您在更短的时间内完成所有操作。

Elastic Load Balancer在所有地区都可用。 仅在美国东部可用的假设是错误的。 检查一下,也许这可以解决您的问题。

关于SSL终止,您可以在ELB上启用该服务。

如果在单节点中,您可以SSL终止于Web服务器本身,这是一种更便宜的解决方案。

首先,非常感谢您抽出宝贵的时间来帮助我进行查询。 我继续了您的建议。

“此外,在“缓存行为”下,您将需要配置CloudFront以将所有请求标头转发到源服务器(这也会禁用缓存,因此您可能不希望这样做),或者至少需要将Host:标头列入白名单,这样您才能原始服务器识别该请求。 添加您需要查看的任何其他标题,例如Referer。

我不知道将主机列入白名单的意思。 在白名单框下,我必须赋予什么值?

由于我不确定要将标头列入白名单,因此我继续允许所有标头。 我转发了所有cookie。

在原始设置中,我不知道标题名称和标题值中要提供什么。 因此,我将标题名称命名为“ header1”,将值命名为域名“ www(。)example(。)com”。

我已经按照您的建议在Route 53中进行了DNS更改。

现在,当我单击www(。)example(。)com时,可以看到带有有效ACM证书的https://www.example(。)com

但是,当我尝试访问应用程序https:// www(。)example(。)com / application时 ,网页导航至https://ec2-xxxx.ap-southeast-1.compute.amazonaws.com / application / ,并再次显示自签名证书。

我猜测Amazon Route 53中的DNS配置存在一些问题。您能告诉我我必须做些什么更改,以便在我打我的应用程序时可以看到有效的证书吗?

另外,当我点击我的应用程序时,我的URL更改为显示ec2-xxxx,而不是域名? 你能告诉我如何纠正吗?

非常感谢。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM