我需要澄清一下CloudFront如何通过HTTPS连接到源服务器。
来自AWS网站:
当CloudFront使用HTTPS与您的来源进行通信时,CloudFront会验证证书是否由受信任的证书颁发机构颁发。 CloudFront支持与Mozilla相同的证书颁发机构;对于当前列表,请参阅包含Mozilla的CA证书列表。您无法在CloudFront与您的源之间使用自签名证书进行HTTPS通信。
我正在使用Let's Encrypt颁发的证书。我的源服务器连接到我的域时获取证书。但是,CloudFront通过IP地址连接到我的源。那么,CloudFront到底在做什么呢?它只验证证书是否由可信CA颁发?重点是什么?顺便说一句,当服务器实际上是AWS上的EC2实例时,使用HTTPS连接到源的重点是什么?
答案 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以缓存对象。
重点是什么?
SSL(TLS)的工作原理。当浏览器使用SSL连接到服务器时,它会执行相同的操作 - 它会验证证书是否有效并与您认为所连接的站点相匹配。
如果没有此约束,您将禁用并丢弃SSL提供的两个组件之一 - 服务器身份验证。
当服务器实际上是AWS上的EC2实例时,使用HTTPS连接到源的重点是什么?
关键是,是的,如果原始服务器在EC2中,它比公共互联网更安全,因为流量仅在亚马逊网络上...但在亚马逊网络上不提供完全免于妥协或拦截的免疫力。它不太可能,但技术上不可能。这属于"最佳实践领域。"在这里使用SSL意味着截获的流量 - 如果它发生 - 对进行拦截的恶意实体仍然没有用。
但是,CloudFront与EC2中不的原始服务器完美配合,因此从CloudFront到源的流量遍历公共Internet。
没有规则要求您在原始服务器上使用SSL,即使CloudFront我们证明它与浏览器之间的HTTPS连接也是如此。从技术上讲,可以为仅HTTP配置原始协议策略......但同样,它不是最佳做法。