如何在cloudfront之间将SSL设置为具有EC2自定义源的反向代理缓存?

时间:2016-11-09 23:05:44

标签: ssl amazon-ec2 amazon-cloudfront

我的域名指向cloudfront,后者又使用自定义源引用我的EC2实例。在这种情况下,它是来自EC2的公共DNS名称,如xxxxx.us-west-2.compute.amazonaws.com。这使它的行为类似于反向代理。

我有一个获取用户信息的表单,因此我想设置SSL。因为我的主域名指向云端,

当使用CF作为反向代理缓存且EC2实例是自定义域时,如何设置cloudfront和EC2实例之间的关系。

我会这样做:

  1. 为我的来源创建一个子域名,例如" origin.mydomain.com"
  2. 获取origin.mydomain.com的SSL证书
  3. 将origin.mydomain.com设置为cloudfront中的原点,而不是亚马逊创建的实例域。 (不是xxxxx.us-west-2.compute.amazonaws.com)
  4. 编辑:为了清晰起见,修改了标题和一些正文。

2 个答案:

答案 0 :(得分:1)

是的,这正是这个想法。

您错过的一步是您还需要一个主域名的证书,您将安装"在CloudFront发行版上。

因此,您需要两个证书(或一个多域 - 有时称为SAN或UCC - 或者您可以使用通配符证书),因为 - 正如您所正确指出的那样 - CloudFront是一个反向代理(不仅仅是这种情况 - 这正是CloudFront,缓存反转代理)。

如果您只有原产地证书,CloudFront与原点之间的流量将被加密,但浏览器和CloudFront之间的流量不会被加密。

在CloudFront方面,您可以购买一个或从AWS证书管理器免费获得证书。这些证书适用于CloudFront和ELB,但不能直接安装在EC2上,因此如果您不使用ELB,则需要在其他地方获取证书。

Gandi将以16美元的价格向您出售EC2实例的简单证书,该版本仅支持CloudFront。我与他们没有任何关系,但我提到这一点,因为我知道它适用于CloudFront - 我使用它们。 LetsEncrypt和StartSSL将免费为您提供一个,但是,可以说更多的工作涉及到。我认为如果安装在CloudFront背后的原点上,这些应该可以工作,但这取决于CloudFront信任存储所信任的那些CA,这可能是这种情况,但不一定能得到保证。 CloudFront将拒绝使用由其无法识别的CA颁发的SSL证书连接到源(它返回502错误,并且过去我遇到了CloudFront背后的StartSSL证书的问题)......这也意味着您不能在原产地使用自签名证书。

答案 1 :(得分:-1)

您可以获得SSL证书并将其分配给您的CF.有两种方法可以做到这一点:

  • 便宜的方法是使用他们的新(ish)证书管理器从AWS获取通配符SSL;一旦您获得SSL,就转到您的CF发行版,只需编辑您的CF发行版并启用SSL

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-viewers-to-cloudfront.html

http://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html

  • 更昂贵的方法是获得自己的自定义SSL并将其与CF一起使用,但这会使您使用的每个SSL每月花费600美元。该过程与上述过程大致相同,区别在于您必须将SSL上传到IAM,然后转到CF控制台并激活。

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/cnames-and-https-procedures.html