CloudFront在连接到源服务器时如何验证证书?

时间:2017-07-13 16:35:32

标签: amazon-web-services ssl https cdn amazon-cloudfront

我需要澄清一下CloudFront如何通过HTTPS连接到源服务器。

来自AWS网站:

  

当CloudFront使用HTTPS与您的来源进行通信时,CloudFront会验证证书是否由受信任的证书颁发机构颁发。 CloudFront支持与Mozilla相同的证书颁发机构;对于当前列表,请参阅包含Mozilla的CA证书列表。您无法在CloudFront与您的源之间使用自签名证书进行HTTPS通信。

参考:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/using-https-cloudfront-to-custom-origin.html

我正在使用Let's Encrypt颁发的证书。我的源服务器连接到我的域时获取证书。但是,CloudFront通过IP地址连接到我的源。那么,CloudFront到底在做什么呢?它只验证证书是否由可信CA颁发?重点是什么?顺便说一句,当服务器实际上是AWS上的EC2实例时,使用HTTPS连接到源的重点是什么?

1 个答案:

答案 0 :(得分:1)

  

那么,CloudFront到底在做什么?它仅验证证书是否由受信任的CA颁发?

SSL证书有两个目的:

  • 提供用于初始化加密的公钥
  • 验证www.example.com上的服务器确实有权提供www.example.com

SSL证书形成一个信任链,回到受信任的根证书,每个证书都由更高级别的信任签名。 CloudFront正在验证证书是否由可追溯到已知受信任根的问题进行真正签名。

并且,CloudFront正在验证证书是否对相关主机有效。

  

当CloudFront使用HTTPS与您的来源进行通信时,CloudFront会验证证书是否由受信任的证书颁发机构颁发。 CloudFront支持与Mozilla相同的证书颁发机构;对于当前列表,请参阅Mozilla Included CA Certificate List。您无法在CloudFront与您的来源之间使用自签名证书进行HTTPS通信。

     

重要

     

如果原始服务器返回过期证书,无效证书或自签名证书,或者原始服务器以错误的顺序返回证书链,CloudFront将删除TCP连接,返回HTTP状态代码502(错误Gateway),并将X-Cache标头设置为来自cloudfront的Error。

     

此外,如果证书的完整证书链(包括中间证书)不存在,CloudFront将删除TCP连接。

     

证书中的一个域名必须与以下一个或两个值匹配:

     
      
  • 您为发行版中适用来源的原始域名指定的值。

  •   
  • 如果您将CloudFront配置为将主机标头转发到您的源,则为Host标头的值。有关将标头转发到源的更多信息,请参阅根据请求标头配置CloudFront以缓存对象。

  •   
     

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

  

重点是什么?

SSL(TLS)的工作原理。当浏览器使用SSL连接到服务器时,它会执行相同的操作 - 它会验证证书是否有效并与您认为所连接的站点相匹配。

如果没有此约束,您将禁用并丢弃SSL提供的两个组件之一 - 服务器身份验证。

  

当服务器实际上是AWS上的EC2实例时,使用HTTPS连接到源的重点是什么?

关键是,是的,如果原始服务器在EC2中,它比公共互联网更安全,因为流量仅在亚马逊网络上...但在亚马逊网络上不提供完全免于妥协或拦截的免疫力。它不太可能,但技术上不可能。这属于"最佳实践领域。"在这里使用SSL意味着截获的流量 - 如果它发生 - 对进行拦截的恶意实体仍然没有用。

但是,CloudFront与EC2中的原始服务器完美配合,因此从CloudFront到源的流量遍历公共Internet。

没有规则要求您在原始服务器上使用SSL,即使CloudFront我们证明它与浏览器之间的HTTPS连接也是如此。从技术上讲,可以为仅HTTP配置原始协议策略......但同样,它不是最佳做法。