如何为仅用于文件存储的S3自定义域名添加SSL证书
为自定义域名的S3存储桶配置HTTPS访问(ACM+CloudFront方案)
因为S3静态网站托管无法直接绑定自定义SSL证书,最可靠且易维护的方案是通过CloudFront分发+ACM证书来实现HTTPS访问,具体步骤如下:
1. 在ACM申请SSL证书
- 必须在**us-east-1(弗吉尼亚北部)**区域操作,因为CloudFront仅支持调用该区域的ACM证书
- 申请时填写目标域名
storage.mycustomdomain.com,选择DNS验证(适配你已在用的Route53,验证流程最顺畅) - ACM会生成一条专属的CNAME验证记录,直接在Route53对应域名的托管区添加这条记录,等待AWS自动完成验证(通常几分钟即可)
2. 创建CloudFront分发
进入CloudFront控制台创建新分发,关键配置项如下:
源设置
- 源域名:选择你的S3存储桶的REST API域名(格式类似
storage.mycustomdomain.com.s3.amazonaws.com,不要选自动补全的静态网站托管域名) - 源访问身份:选择「创建新的OAI」,并勾选「更新存储桶策略」——这会自动配置S3桶的权限,确保只有CloudFront能访问桶内内容,避免直接访问S3的HTTP流量
默认缓存行为设置
- 查看器协议策略:选择「重定向HTTP到HTTPS」,强制所有访问走HTTPS链路
- 允许的HTTP方法:按需选择,静态资源场景选「GET, HEAD」即可
分发设置
- 备用域名(CNAMEs):填入
storage.mycustomdomain.com - SSL证书:选择你刚才在ACM申请并验证通过的证书
- 默认根对象:如果桶内有首页文件(如index.html),可填写该文件名,否则留空
完成配置后点击「创建分发」,等待10-15分钟让CloudFront完成全球部署。
3. 更新Route53 DNS记录
删除之前指向S3的CNAME记录,新增一条CNAME记录:
- 记录名称:
storage.mycustomdomain.com - 记录值:你的CloudFront分发域名(格式类似
d123456abcdef.cloudfront.net,可在CloudFront控制台的分发详情中找到)
4. 验证访问
部署完成后,访问 https://storage.mycustomdomain.com 即可通过HTTPS访问S3内容,原HTTP请求会自动重定向到HTTPS。
额外说明
- 若不需要强制HTTPS,可将「查看器协议策略」改为「HTTP和HTTPS」,但推荐强制重定向以提升可信度
- 此时可以关闭S3的静态网站托管功能,因为流量都通过CloudFront的REST接口访问S3,静态网站域名不再需要使用
- 不推荐直接给S3静态网站托管配置HTTPS(仅部分区域支持,且需手动上传证书,维护成本高),CloudFront方案同时还能获得CDN加速的额外收益
内容的提问来源于stack exchange,提问作者Thev
相关产品推荐
相关产品推荐

