amazon-web-services - 无法让 HTTPS 与 S3 上的静态托管站点一起使用

标签 amazon-web-services ssl amazon-s3 amazon-cloudfront

我无法为 S3 上托管的静态网站设置 HTTPS。我按照官方文档和一些教程进行了操作,但仍然无法解决问题。我的设置如下。

首先,我通过 AWS Certificate Manager 请求 SSL 证书。事实上,我已经请求了其中的 2 个,但它们都没有帮助使 HTTPS 工作。 SSL 证书域如下所示。我已验证状态为已发布

  • *.mydomain.com
  • sub.mydomain.com

请注意,我的域名已在 Google Domains 中注册。我有 3 个 CNAME 条目,如下所示。

  • 一个用于 *.mydomain.com
  • 一个用于 sub.domain.com
  • 一个用于返回 S3 存储桶的 HTTP

然后,我在 CloudFront 上创建了一个分配。起源和起源组是

  • 源域名和路径=sub.mydomain.com.s3.amazonaws.com
  • 源 ID=S3-sub.mydomain.com
  • 来源类型=S3 来源

行为是

  • 路径模式=默认(*)
  • 来源或来源组=S3-sub.mydomain.com
  • Viewer Protocol Policy=将 HTTP 重定向到 HTTPS

在不同的教程网站上,我看到推荐的 Viewer Protocol Policy 是任何值之一(例如 HTTP 和 HTTPSRedirect HTTP to HTTPS 仅限 HTTPS)。我尝试了所有 3 个值,但没有获得预期的效果(修改成本非常高,因为每次更改都需要 15 分钟以上的时间才能部署)。

在 CloudFront 分配的 Status=Deployed 和 State=Enabled 之后,我尝试通过 HTTPS 访问我的站点,但它只是挂起并超时。 HTTP 访问仍然正常,这与我对 Viewer Protocol Policy=Redirect HTTP to HTTPS 的理解相反。

关于我在这里做错了什么有什么想法吗?许多教程建议使用端到端 AWS 服务(例如 DNS)来简化设置,但我已经在 Google 注册了我的域。

请注意 this post关于 HTTPS 与仅 VPN 访问,和 this post建议采用全 AWS 方法。第二篇文章很有趣,因为一位用户建议输入 A 记录。目前,我的子域只有一个 CNAME 记录。如果我要创建一条 A 记录,我会指向哪里?

更新:我进入 Google Domains 并删除了指向 S3 存储桶 URL 的 sub 的 CNAME 条目。然后,我添加了一个新的 CNAME,其中 sub 指向 CloudFront URL。当我尝试 HTTPS 时,我可以点击一些东西,但我得到一个 AccessDenied 的 XML。

<Error>
 <Code>AccessDenied</Code>
 <Message>Access Denied</Message>
 <RequestId>186A2418C76E7526</RequestId>
 <HostId>
  somelongstring
 </HostId>
</Error>

最佳答案

通过另外做 2 件事,我能够让一切正常工作。

在 Google Domains 上,我创建了一个 CNAME,将 sub 指向 CloudFront url。

在 CloudFront 上,为了避免 AccessDenied 消息,我将 Default Root Object 设置为 index.html。显然,S3 的索引文档设置与 CloudFront 是解耦的。

关于amazon-web-services - 无法让 HTTPS 与 S3 上的静态托管站点一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54245353/

相关文章:

amazon-web-services - 如何在 Step Function 中包含 AWS Glue 爬网程序

SSL证书配置和测试

ssl - 在 Docker 容器中使用主机 CA 证书

apache - 为什么 Apache 提供新证书和过期证书?

amazon-web-services - AWS S3/加速存储桶上传仅对慢速连接用户失败

amazon-web-services - 使用 erlcloud 列出 S3 存储桶时出现超时错误

postgresql - 在 AWS RDS for Postgres 上安装 pgAgent

amazon-web-services - AWS S3 与 Elemental MediaStore

amazon-web-services - 作为一个实验,我想与 AWS 一起工作。我期望支付多少?

ruby - 使用 aws-sdk gem 更改 s3 文件对象所有者