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 连接到源站有什么意义?

那么

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

SSL 证书有两个用途:

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

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

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

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

重要

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

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

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

  • 您为分配中适用源的源域名指定的值。

  • 如果您将 CloudFront 配置为将主机标头转发到您的源,则为主机标头的值。有关将标头转发到源的更多信息,请参阅配置 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 到源站的流量会遍历公共互联网。

没有规则要求您在源服务器上使用 SSL,即使 CloudFront 证明了它与浏览器之间的 HTTPS 连接。 从技术上讲,可以为仅 HTTP 配置源协议策略...但是,同样,这不是最佳实践。

最新更新