容器与平台
AWS Amplify Hosting 自定义域名 SSL 配置
AWS Amplify Hosting 用 AWS Certificate Manager(ACM)的证书保护自定义域名,所以签发 CA 是亚马逊。你可以用免费的 Amplify 托管证书,应用托管在 Amplify 期间会自动续期;也可以选一张自己导入到 us-east-1 区域 ACM 的证书。Amplify 支持通配符子域名。DNS 在第三方服务商时,要加一条 ACM 验证用的 CNAME、每个子域名一条 CNAME,根域名用 ANAME/ALIAS。
步骤和菜单名称以 Amplify Hosting 和 ACM 官方文档为准(截至 2026 年 11 月),示例用 example.com 和 d111111abcdef8.cloudfront.net。
速查表
| 问题 | AWS Amplify Hosting 的做法 |
|---|---|
| 自动证书的 CA | 亚马逊(ACM 生成) |
| 验证方式 | DNS:一条指向 acm-validations.aws 的 CNAME |
根域名 example.com |
ANAME/ALIAS 指向应用的 CloudFront 地址(或 Route 53 别名) |
www 和其他子域名 |
CNAME 指向应用的 cloudfront.net 地址 |
| CAA 要放行 | amazon.com、amazontrust.com、awstrust.com、amazonaws.com 至少一个 |
| 通配符 | 支持通配符子域名,托管证书覆盖所有子域名 |
| 自有证书 | 支持,需放在 us-east-1 的 ACM;导入的证书 ACM 不续期 |
| 续期 | 托管证书自动续期 |
国内访问说明
这里说的是 AWS 海外区域的 Amplify Hosting,从中国大陆访问的速度和稳定性没有保证。网站主要服务国内用户、需要 ICP 备案的,建议使用国内云(阿里云、腾讯云等)托管静态站点,HTTPS 参考 阿里云 CDN 配置 HTTPS 或 腾讯云 CDN 配置 HTTPS。
第一步:在 Amplify 控制台添加域名
打开应用,在 Hosting > Custom domains 里点 Add domain,输入根域名 example.com。域名不在 Route 53 时,Amplify 会提议创建托管区域;想继续用阿里云解析、DNSPod 等,就选 Manual configuration。
默认会创建两个条目:https://example.com 和 https://www.example.com,并把根域名跳转到 www。接着选证书:
- Amplify managed certificate:免费的默认托管证书;
- Custom SSL certificate:从 ACM 里选一张自己的证书。
点 Add domain,然后在 Actions > View DNS records 里查看要添加的记录。
第二步:添加 DNS 记录
添加域名后要尽快加记录。ACM 会立刻开始检查,而且越往后检查得越少;隔几个小时才加记录,是域名卡在 Pending Verification 最常见的原因。
| 用途 | 类型 | 主机记录 | 记录值 |
|---|---|---|---|
| ACM 验证 | CNAME |
_c3e2d7eaf1e656b73f46cd6980fdc0e |
_cjhwou20vhu2exampleuw20vuyb2ovb9.j9s73ucn9vy.acm-validations.aws |
www |
CNAME |
www |
d111111abcdef8.cloudfront.net |
| 根域名 | ANAME 或 ALIAS |
@ |
d111111abcdef8.cloudfront.net |
阿里云解析、DNSPod 会自动在主机记录后补上域名,所以验证记录只填前缀那一段。DNS 服务商不支持 ANAME/ALIAS 时,AWS 强烈建议把 DNS 迁到 Route 53。用 Cloudflare 的话,它的 A 记录只能填 IPv4 地址,Amplify 排错文档建议根域名改用 CNAME(Cloudflare 会自动拉平)。网站已有线上流量的,等域名状态显示 AVAILABLE 后再改 www 和根域名的记录。第三方 DNS 的所有权验证和生效最长可能要 48 小时。
验证用的 CNAME 要永久保留,被修改或删除后 Amplify 无法续期托管证书。
第三步:检查 CAA 记录
域名设了 CAA 的话,至少放行一个亚马逊 CA:
example.com. 3600 IN CAA 0 issue "amazon.com"
写 amazontrust.com、awstrust.com 或 amazonaws.com 也一样有效。签发时 CAA 出问题,ACM 会报 One or more domain names have failed validation due to a Certification Authority Authorization (CAA) error。可以用 CAA 检测工具 确认。
通配符和自定义证书
Amplify 支持在自定义域名上配置通配符子域名。在 Hosting > Custom domains > Domain configuration 里添加名为 * 的子域名并关联到某个分支,dev.example.com、prod.example.com 这类请求就都会到这个分支。星号必须单独占一整段:*domain.example.com、subdomain.*.example.com 都不允许。默认情况下,Amplify 签发的托管证书覆盖自定义域名的所有子域名。
使用自有证书的步骤:
- 从任意 CA 获取证书。Amplify 支持 1024、2048、3072、4096 位 RSA 密钥,以及 256 位 ECDSA(
prime256v1曲线)密钥。 - 在美国东部(弗吉尼亚北部)
us-east-1区域的 ACM 中导入或申请证书。 - 确认证书覆盖你要添加的所有子域名,可以带上
*.example.com。 - 添加或更新域名时选择 Custom SSL certificate。
ACM 不会续期导入的证书。到期前在 CA 那里续好,重新导入 ACM,Amplify 会自动刷新这个域名用的证书。托管证书和自定义证书之间可以随时切换。
验证
域名状态变成 AVAILABLE 后,https://example.com 会返回覆盖该域名的有效证书,托管证书的签发者是亚马逊。用 SSL 证书检查 检查,或运行:
curl ssl.sh/example.com
确认 CloudFront 为你的域名返回的证书:
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
| openssl x509 -noout -issuer -subject -ext subjectAltName -dates
托管证书的颁发者是亚马逊。不要直接测 cloudfront.net 地址,它会返回 404,因为 Amplify 按主机名路由。
续期
只要应用还托管在 Amplify、验证 CNAME 没被动过,托管证书就会自动续期。Amplify 的文档还写着证书有效期 13 个月,但 ACM 文档现在写的是 198 天,这符合 CA/浏览器论坛 SC-081v3 投票规定的 2026 年 3 月 15 日起公开证书最长 200 天。这个上限 2027 年 3 月 15 日降到 100 天,2029 年 3 月 15 日降到 47 天。导入的证书要你自己负责,建议加到 ssl.sh 监控(开发中)。
常见问题排查
- Pending Verification(第三方 DNS):用
dig或 whatsmydns.net 确认 CNAME 能解析。记录存在却解析不出来,联系 DNS 服务商,或者迁到 Route 53。 - Pending Verification(Route 53):注册域名用的名称服务器和托管区域的不一致,改成一致。
- Pending Verification(多级子域名):服务商可能把域名后缀补了两遍。把记录名去掉二级域名和顶级域名试试,比如把
_hash.docs.backend.example.com改成_hash.docs.backend,等 15 到 30 分钟。 - CNAMEAlreadyExistsException:这个主机名已经挂在本账号或其他账号的另一个 CloudFront 分配上。先从那边移除;如果刚删除,至少等一小时再重新连接。
- Additional Verification Required:ACM 需要更多信息才能处理(比如热门域名),联系 AWS Support。
- The requested domain cannot be used by this AWS account. Please contact AWS support for assistance.:属于跨账号关联。添加时带上
www这样的子域名,Amplify 可以自动验证所有权;或者添加_amplify-cross-account-ownership-proofTXT 记录后联系 Support。 - 加了 CAA 之后出现证书或 HTTPS 错误:ACM 无法更新或重新签发证书。先加上亚马逊的 CAA 值,再删除并重新连接域名(会有停机),或请 Support 重新签发。见 CAA 记录阻止签发。
常见问题
Amplify 的托管证书是哪家 CA 签的?
Amplify 的默认证书由 AWS Certificate Manager 生成,签发者是亚马逊的公开 CA。设了 CAA 的话,要放行 amazon.com、amazontrust.com、awstrust.com、amazonaws.com 中的至少一个。
Amplify 托管证书的有效期是多久?
按 ACM 文档是 198 天。Amplify 的文档页面还写着 13 个月,但 ACM 文档现在写的是 198 天,这符合 2026 年 3 月 15 日起公开证书最长 200 天的规定。不管哪种说法,只要应用留在 Amplify 上都会自动续期。
Amplify 能用通配符或自有证书吗?
可以。Amplify 支持在自定义域名上配置通配符子域名,默认托管证书覆盖该域名的所有子域名。想用自有证书,就把它导入 us-east-1 区域的 ACM(RSA 1024 到 4096 位或 ECDSA P-256),添加域名时选 Custom SSL certificate。
域名一直停在 Pending Verification 怎么办?
先确认 ACM 验证用的 CNAME 能解析出来。ACM 开始时每隔几分钟检查一次,一小时后改成几小时一次,记录加得晚就会拖很久。有些 DNS 服务商会自动在主机记录后面补上域名,主机记录只填前缀试试。
资料来源
- AWS Amplify Hosting: Using SSL/TLS certificates
- AWS Amplify Hosting: Adding a custom domain managed by a third-party DNS provider
- AWS Amplify Hosting: Setting up wildcard subdomains
- AWS Amplify Hosting: Troubleshooting custom domains
- AWS Certificate Manager: CAA problems
- AWS Certificate Manager: Certificate characteristics