我正在尝试为我的 us-east-1 s3 存储桶创建一个 cname,如下所示:
media.domain.com => media.domain.com.s3.amazonaws.com
我按照指南此处创建了一个具有符合 DNS 名称的存储桶。
但是,URL 不是类似 media.domain.com.s3.amazonaws.com 的 URL,而是以下内容,因为斜杠,我无法将其用于 cname 重定向:
https://s3.amazonaws.com/media.domain.com/
我在这里查看了 s3 路径弃用计划,我假设 us-east-1 会首先得到 this
但是,当我尝试通过推荐的路径访问域时这里
SSL 中断
我尝试过以下方法:
media.domain.com.s3.us-east-1.amazonaws.com
media.domain.com.s3-us-east-1.amazonaws.com (notice the dash between s3 and us)
media.domain.com.s3-control.us-east-1.amazonaws.com
media.domain.com.s3.amazonaws.com
我在这里做错了什么?
使用带有 SSL 的虚拟托管式存储桶时,SSL 通配符 证书仅匹配不包含点(“.”)的存储桶。到 解决这个问题,使用 HTTP 或编写自己的证书验证 逻辑
amazon-s3-path-deprecation-plan-the-rest-of-the-story
您需要重命名不包含
dots (".")
的存储桶或使用路径样式 URL 避免 SSL 错误。
因为它应该适用于
https://s3.amazonaws.com/media.domain.com/
但是 SSL 将会中断
media.domain.com.s3.amazonaws.com
或者您可以使用 @Chris 建议的 CloudFront,或者您可以查看另一个简单的选项 VirtualHostingCustomURLs
将自定义 SSL 与 S3 结合使用。
https://media.domain.com/object.jpg
您的自定义域上 HTTPS 的
media.domain.com.s3.amazonaws.com
CNAME 将无法通过任何 SSL 验证,因为证书适用于 s3.amazonaws.com
子域,而不是 media.domain.com
子域。
此外,尝试直接在浏览器中访问
media.domain.com.s3.amazonaws.com
将会导致 SSL 验证失败,因为 SSL 仅对单级子域有效 (*.s3.amazonaws.com
)。
如果您想解决此问题,您将需要托管此域以解析为CloudFront 发行版,该发行版位于您的 S3 存储桶前面。
通过执行此操作,您可以在创建应使用的发行版时指定 SSL。
[2023] 暂时没有这样的问题 这是我使用的方法:
1- 将 CNAME 记录添加到 Cloudflare 上的域
2- 使用要在 AWS S3 上使用的子域和域名(例如“static.domain.com”)创建一个存储桶并将其设为公共。
3- AWS S3 上的存储桶 URL 现在如下所示 “https://s3.eu-central-2.amazonaws.com/static.domain.com” 但您在 CNAME 记录中 “static.domain.com.s3.eu-central-2.amazonaws.com” 你应该添加为
4- [最重要的一步] => 等等, 一旦进行上述设置,不要指望立即得到结果,您将收到 ssl 错误。 所以至少要等1小时才能看到结果。
祝你好运。