CloudFront间歇性为Route53下子域返回错误SSL证书(ERR_CERT_COMMON_NAME_INVALID)
问题分析与解决方案
背景信息
我在AWS S3存储桶中存放了remoteEntry.js文件,配置CloudFront及自定义SSL证书后,通过https://modules.uat.mysite.com/available-modules/remoteEntry.js加载该文件。
Route53记录配置如下:
Record name: modules.uat.mysite.com Value: d1rs95wmy2p000.cloudfront.net. Alias: Yes Record type: A
问题表现
服务有时正常,有时随机触发SSL错误(ERR_CERT_COMMON_NAME_INVALID),Chrome会显示证书指向负载均衡器的*.mysite.com通配符证书而非CloudFront证书,数分钟后自动恢复。
疑问
即使存在modules.uat.mysite.com这个具体域名记录,*.mysite.com通配符CNAME会不会干扰子域解析?
期望
确保modules.uat.mysite.com始终解析到CloudFront并使用正确证书,不受客户端DNS状态或网络变化影响。
失败请求链路示例
https://apps.uat.mysite.com/dashboards → https://apps.uat.mysite.com/main.js → https://modules.uat.mysite.com/available-modules/remoteEntry.js?t=..
解答
通配符记录的优先级规则
DNS规范明确:具体域名记录的优先级高于通配符记录,正常情况下modules.uat.mysite.com的A别名记录会被优先解析,不会触发*.mysite.com的通配符CNAME。出现随机异常,大概率是以下问题导致:- Route53记录冲突:检查是否存在
modules.uat.mysite.com的旧记录(比如未删除的CNAME),或同域名下同时存在不同类型的记录;也可能是通配符记录的TTL设置过长,部分客户端缓存了旧解析结果。 - CloudFront配置疏漏:确认CloudFront分发的备用域名(CNAME)已添加
modules.uat.mysite.com,且绑定的SSL证书有效并覆盖该子域;若分发未关联该域名,可能触发 fallback到负载均衡器的逻辑。 - DNS缓存不一致:部分客户端或本地DNS服务器缓存了过期的解析结果(比如之前该子域曾指向负载均衡器),缓存未更新时就会随机出现错误。
- Route53记录冲突:检查是否存在
针对性解决措施
- 清理冲突记录:在Route53控制台彻底排查
modules.uat.mysite.com的所有关联记录,确保只有一条指向CloudFront的A别名记录,删除重复或失效的旧记录。 - 调整TTL值:将
modules.uat.mysite.com的A记录TTL设为较短值(比如300秒),同时缩短*.mysite.com通配符记录的TTL,加快DNS缓存更新速度。 - 验证CloudFront配置:
- 确认分发的备用域名列表包含
modules.uat.mysite.com; - 检查SSL证书是否覆盖该子域(单域名证书或包含该子域的通配符证书均可),且证书已完成域名验证;
- 确认CloudFront源配置正确指向目标S3存储桶,避免因源访问失败触发异常 fallback。
- 确认分发的备用域名列表包含
- 强制刷新DNS缓存:让受影响的客户端执行本地DNS缓存刷新(Windows用
ipconfig /flushdns,macOS用sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder),同时联系DNS服务商确认全局缓存同步情况。
- 清理冲突记录:在Route53控制台彻底排查
内容的提问来源于stack exchange,提问作者jarvo69
相关产品推荐
相关产品推荐

