Route53 子域名“选不到 CloudFront”与“保存报证书错误”的解决:给同一台源站追加域名到同一个 CloudFront 分发

适用场景:多个域名/子域名都指向同一台服务器(同一源站 IP),希望复用同一个 CloudFront 分发 ,统一做 CDN + 限流/防护。

前提:域名 DNS 在 Route53,CloudFront 已创建分发,回源使用 origin.xxx 域名。


一、前提条件(必须满足)

  1. CloudFront 分发已存在(已部署/可用)。
  2. 源站可被 CloudFront 回源 (例如 origin 域名:origin.wwwnav.com → A 记录 → 源站 IP)。
  3. CloudFront 使用的证书必须在 ACM us-east-1(N. Virginia)(CloudFront 只能绑定该区域证书)。
  4. 要追加的域名必须加入 CloudFront 的 Alternate domain names(CNAMEs)并被证书覆盖,否则无法保存。

二、现象与原因说明(关键原理)

现象 1:Route53 里"Alias → CloudFront 分配"下拉选择不到资源

  • 表现:编辑记录(如 greasyfork.xxx.com 的 A 记录)时,选择 CloudFront 分配的别名,下拉提示 未找到任何资源
  • 原因:CloudFront 分发未添加该域名(Alternate domain names/CNAMEs 中没有它)
    Route53 的 CloudFront Alias 下拉只会列出"已声明服务该域名"的分发。

现象 2:CloudFront 添加新域名保存时报错(证书 SSL)

  • 报错典型文案:

    The certificate that is attached to your distribution doesn't cover the alternate domain name (CNAME) that you're trying to add.

  • 原因:分发绑定的证书不包含你要追加的域名(SSL/SNI 不匹配)。CloudFront 不允许保存。


三、正确做法:把同一源站的"新域名/子域名"追加到同一个 CloudFront 分发

Step 1:准备/更新证书(解决 SSL 覆盖问题)

推荐一次性解决:用通配符证书避免反复改证书。

  1. 打开 ACM ,切换区域到 US East (N. Virginia / us-east-1)
  2. 申请证书(DNS 验证):
  • xxx.com
  • *.xxx.com(覆盖所有子域,如 greasyfork.xxx.com
  1. 用 Route53 自动创建验证记录,等待证书状态 Issued

Step 2:把 CloudFront 分发的证书切换为新证书

CloudFront → Distributions → 选中你的分发 → Settings/Edit

TLS certificate / Custom SSL certificate 处选择刚签发的 us-east-1 证书 → 保存。


Step 3:在 CloudFront 添加新域名(Alternate domain names / CNAMEs)

CloudFront → 分发 → Settings/Edit

Alternate domain names (CNAMEs) 中新增:

  • greasyfork.xxx.com(或你的新域名)

保存(若证书已覆盖则可成功保存)。


Step 4:Route53 将新域名指向 CloudFront(Alias)

Route53 → Hosted zone → 找到或创建记录:

  • 记录名:greasyfork(即 greasyfork.xxx.com
  • 类型:A
  • Alias:开启
  • Alias target:选择该 CloudFront 分发(此时下拉应能选到)

保存。


四、验证方案(最小验证)

1)DNS 验证(强制用公共 DNS)

powershell 复制代码
nslookup greasyfork.xxx.com 8.8.8.8

预期:返回 CloudFront 的 IP 段(通常为 54.x / 13.x 等)。

2)HTTPS 头请求验证

powershell 复制代码
iwr https://greasyfork.xxx.com -Method Head -TimeoutSec 10

预期:200/301 等正常响应(不应出现证书错误)。


五、结论(牢记两句)

  1. Route53 选不到 CloudFront :因为 CloudFront 分发 没添加该域名(CNAMEs)
  2. CloudFront 保存报错 :因为分发绑定的 SSL 证书没覆盖该域名 ,需在 ACM us-east-1 申请/更新证书后再添加。
相关推荐
中杯可乐多加冰9 个月前
【解决方案】CloudFront VPC Origins 实践流程深入解析 —— 安全高效架构的实战之道
安全·架构·安全架构·vpc·cloudfront
亦世凡华、9 个月前
加速用户体验:Amazon CloudFront 实践与优化技巧
经验分享·教程·亚马逊云科技·cloudfront
小涵10 个月前
【AWS】使用CloudFront S3 Lambda打造丝滑低延迟Web体验
前端·云计算·aws·cloud·cdn·s3·cloudfront
cnnews1 年前
AWS中使用CloudFront分发位于S3中的静态网站
javascript·云计算·aws·cloudfront·amazon s3·route 53
Francek Chen2 年前
Amazon云计算AWS(三)
服务器·云计算·aws·cloudfront·rds·sqs
亚林瓜子2 年前
AWS Cloudfront支持vuejs的html5模式
vue.js·html5·aws·s3·cloudfront