首页 > 解决方案 > 通过 AWS CloudFront 的自定义子域在 S3 网站上通过 https 故障,但通过 HTTP 工作正常

问题描述

*.example.cz我使用 CertBot 在 Amazon Linux EC2 实例上创建了 Let's Encrypt 通配符证书。附加到 EC2 上的 nginx Web 服务器的证书,网站在 HTTP 和 HTTPS 上都可以正常工作。有几个 DNS 记录www.example.cz*.example.cz类型A为 EC2 IP 地址。

然后将子域cdn.example.cz指向 S3 静态网站存储桶:

  1. 我将相同的通配符 SSL 证书从 EC2 导入到 AWS Certificate Manager。
  2. 使用导入的 SSL 证书创建了 CloudFront 分配。
  3. 创建 CNAME 记录cdn.example.cz并将其指向 S3 存储桶的 URL。

当我使用它从 S3 请求一个对象时,http://cdn.example.cz/object.jpg它可以工作,但是通过 HTTPS 的请求一直很忙,直到超时。

我尝试了 CloudFront 的备用域名cdn.example.cz,也尝试了www.example.cz example.cz. 没有工作。

AWS 证书管理器 AWS 证书管理器

CloudFront 分配 CloudFront 分配

CloudFront 分配来源 CloudFront 分配来源

标签: amazon-web-servicesamazon-ec2lets-encryptwildcard-subdomain

解决方案


CNAME记录必须指向 CloudFront 分配域名 xxxxxxx..cloudfront.net

我不确定这一点,但我也eu-south-1从 Origin 域名中删除了,所以现在是cdn.example.cz.s3.amazonaws.com

更新 CloudFront 分配后,我不得不等待几个小时才能正确传播更改(因为在我意识到 SSL 需要 CloudFront 之前,它最初指向 S3)。一旦完成,此设置就可以完美运行。


推荐阅读