【问题标题】:CloudFront - How to put ELB with HTTPS as custom origin while DNS is differentCloudFront - 如何在 DNS 不同时将带有 HTTPS 的 ELB 作为自定义源
【发布时间】:2020-01-26 13:50:14
【问题描述】:

我有一个带有自定义域的云端分发,例如 www.x.com,它列在分发的备用域名中。

我希望它转发到的来源是一个 ELB,带有一个带有 www.x.com 证书的 HTTPS 侦听器。

源域是 ELB dns 名称 (xxxx.ap-east-1.elb.amazonaws.com) - 由于其他原因,我无法在其中放置另一个子域。

我在行为页面上遵循建议,我们可以转发标头(主机)标头,以便它能够验证证书。但是,我一直遇到 Cloudfront 说无法联系来源的问题。

除了使用子域指向 ELB 之外,还有其他方法可以解决这个问题吗?转发 Host / Origin 头是不是不够?

【问题讨论】:

  • 白名单主机标头足以解决证书问题,确保您使用 www.x.com 而不是 cloudfront.net url 访问 cloudfront
  • 是的,我正在通过 www.x.com 连接。一件事是这个云端用于服务两个不同的来源。错误是针对静态内容(s3),它将针对所有路径。上面是这个elb(某些路径,如/api)。我把它作为更高的优先级。它会导致问题吗?
  • 我收到了更新 - 如果我将最小来源 SSL 设置为 tlsv1,问题就消失了。如果是 v1.1 或 v1.2 则不起作用。知道为什么吗?

标签: amazon-web-services certificate amazon-cloudfront amazon-elb


【解决方案1】:

所以终于找到答案了。

白名单主机将正确地将标头转发到源 (ELB)。但是,默认情况下 Beanstalk 创建的 elb 显然对 HTTPS 使用 ELBSample-ELBDefaultNegotiationPolicy 策略。这样,它将使用 TlSv1 协议,并且当您的源设置使用 TLSv1.1 或更高版本时,它将不起作用。

要正确设置此项,请确保从 elasticbeanstalk 设置正确的命名空间设置

    {
      namespace = "aws:elb:policies:sslpolicy"
      name      = "SSLReferencePolicy"
      val       = "ELBSecurityPolicy-TLS-1-2-2017-01"
    },
    {
      namespace = "aws:elb:policies:sslpolicy"
      name      = "LoadBalancerPorts"
      val       = "443"
    }

通过这种方式,您可以配置您希望 HTTPS 端口使用的协议。

确保还从云端设置您的源域设置以匹配参考版本。

【讨论】:

    猜你喜欢
    • 2020-08-13
    • 2021-01-29
    • 2021-04-21
    • 2018-03-30
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    相关资源
    最近更新 更多