Amazon web services 使用HTTPS将example.at路由到S3 bucket和*.example.at路由到负载平衡器

Amazon web services 使用HTTPS将example.at路由到S3 bucket和*.example.at路由到负载平衡器,amazon-web-services,amazon-s3,amazon-cloudfront,amazon-route53,Amazon Web Services,Amazon S3,Amazon Cloudfront,Amazon Route53,我已经设置了一个多租户应用程序,该应用程序应该可以通过子域(例如)供客户使用。对*.example.at的请求通过路由53路由到负载平衡器。负载平衡器具有AWS签名的通配符证书(例如,支持example.at和*.example.at)。从这边看,一切正常,我可以访问,等等 基于此设置,我希望在不使用子域(www除外)的情况下将特定请求路由到bucket(也称为www.example.com)而不是负载平衡器(我只想为“主域”的请求提供一个静态站点)。它可以工作,但我只能访问www.exampl

我已经设置了一个多租户应用程序,该应用程序应该可以通过子域(例如)供客户使用。对*.example.at的请求通过路由53路由到负载平衡器。负载平衡器具有AWS签名的通配符证书(例如,支持example.at和*.example.at)。从这边看,一切正常,我可以访问,等等

基于此设置,我希望在不使用子域(www除外)的情况下将特定请求路由到bucket(也称为www.example.com)而不是负载平衡器(我只想为“主域”的请求提供一个静态站点)。它可以工作,但我只能访问www.example.at和example.at而不使用HTTPS。我的设置如下所示:

然后,我发现我必须使用Cloudfront才能将HTTPS用于带有S3存储桶的自定义域(如果正确的话?)。现在我有几个问题:

  • 是否有必要使用Cloudfront通过HTTPS为www.example.at和example.at提供S3 bucket中的内容
  • 如果需要Cloudfront,则我必须根据。是否可以使用AWS certificate manager为同一域创建两个证书,或者是否会与此设置发生冲突
  • 使用*.example.at作为负载平衡器的别名类型记录可以吗
  • 一般来说,我的53号路线设置是否有效
  • 我想在不使用子域(www除外)的情况下将特定请求路由到bucket(也称为www.example.com)或

    这些“域”中的每一个都必须路由到不同的bucket,除非您在S3前面使用代理(重新路由从浏览器传递的主机名),否则域名必须与bucket名称匹配。如果没有,那么您的请求将进入一个与您从中路由的DNS名称匹配的bucket,路由与S3 bucket端点的主机名无关

    换句话说,假设您的主机名是www.example.com,并且您将CNAME设置为example.com.s3.amazonaws.com(或者您可以使用网站端点,这对本例并不重要)

    当请求命中DNS名称www.example.com时,它将被发送到S3主机名后面的S3服务器。来自浏览器的请求是针对主机名“www.example.com”,指向S3端点的引用的实际CNAME是不相关的,因为S3永远不知道浏览器用于连接S3的实际CNAME是什么。因此S3将尝试从www.example.com bucket中提取请求的对象

    URL->S3存储桶

    • ->s3://www.example.com
    • ->s3://example.com
    它可以工作,但我只能访问www.example.at和example.at而不使用HTTPS

    使用SSL到S3存储桶时,像这样的CNAME DNS路由不起作用。原因是S3通配符证书的深度为1级(*.S3.amazonaws.com),因此您的bucket www.example.com.S3.amazonaws.com将无法匹配它,因为它比通配符高出2级。因此,您的浏览器拒绝该证书,因为该证书对主机名无效

    要实现这一点,您必须在S3前面使用某种代理,并为所讨论的域使用您自己的证书

    是否有必要使用Cloudfront通过HTTPS为www.example.at和example.at提供S3 bucket中的内容

    CloudFront是一个很好的选项,用于通过CNAME路由DNS将HTTPS寻址到我们刚才提到的S3 bucket问题

    如果需要Cloudfront,则根据AWS官方文件,我必须申请美国东部地区www.example.at和example.at的新证书。是否可以使用AWS certificate manager为同一域创建两个证书,或者是否会与此设置发生冲突

    我不能回答这个问题,我只能建议你试着找出发生了什么。如果它不起作用,那么它就不是一个选项。这个问题不需要花太多时间来解决

    使用*.example.at作为负载平衡器的别名类型记录可以吗

    为了澄清,A记录只能是IP地址,A别名类似于CNAME(但特定于路由53)

    我强烈推荐CNAMES(或别名,它们相似)。直接指向S3的A记录是个坏主意,因为您不知道该IP是否或何时将从服务中删除。通过使用CNAME/别名引用主机名,您不必担心这一点。除非您能100%确定IP将保持可用,否则您不应该引用它

    一般来说,我的53号路线设置是否有效

    我看不出它有任何问题,根据你所描述的,听起来好像一切都在按预期进行

    如果需要Cloudfront,则根据AWS官方文件,我必须申请美国东部地区www.example.at和example.at的新证书。是否可以使用AWS certificate manager为同一域创建两个证书,或者是否会与此设置发生冲突


    正如@JoshuaBrieframan所建议的,我现在只是尝试在另一个地区为同一个域创建另一个证书,结果成功了。我还可以将该证书用于CloudFront发行版(附加证书是在美国东部创建的),目前所有作品都没有任何问题。

    感谢您的全面回答!