容器与平台
Netlify 自定义域名 HTTPS 配置与排错
Netlify 给每个自定义域名免费签发 Let's Encrypt 证书:域名的 DNS 指向 Netlify 后自动申请,Netlify 托管的证书也自动续期。用外部 DNS 时,根域名指向 Netlify 的负载均衡,www 指向站点的 netlify.app 地址;如果把 DNS 交给 Netlify DNS,还会自动得到一张通配符证书。
步骤和菜单名称以 Netlify 官方文档为准(截至 2026 年 11 月)。站点名 brave-curie-12345.netlify.app 和域名 example.com 都是示例。
速查表
| 问题 | Netlify 的做法 |
|---|---|
| 自动证书的 CA | Let's Encrypt |
根域名 example.com |
ALIAS/ANAME/拉平的 CNAME 指向 apex-loadbalancer.netlify.com,或 A 记录 75.2.60.5 |
www 和其他子域名 |
CNAME 指向 brave-curie-12345.netlify.app |
| CAA 要放行 | Let's Encrypt(letsencrypt.org) |
| 通配符证书 | 域名使用 Netlify DNS 时自动签发 |
| 上传自有证书 | 支持(Set Custom Certificate),文档未写套餐限制 |
| 续期 | 托管证书自动续期,自定义证书要手动 |
国内访问说明
Netlify 的节点都在境外,从中国大陆访问速度和可用性都没有保证,不同地区、不同运营商的体验差别很大。拿来做个人博客、海外产品页可以;如果网站主要服务国内用户,或者业务上需要 ICP 备案,建议放到阿里云、腾讯云等国内云,HTTPS 可以参考 阿里云 CDN 配置 HTTPS 或 腾讯云 CDN 配置 HTTPS。
第一步:添加域名,选好主域名
在站点的 Domain management 里添加自定义域名。www.example.com 这类额外的名字在 Netlify 里叫域名别名(alias),签发时会把所有别名都放进证书,但前提是每个别名的 DNS 事先都配好了,没配好的会被漏掉。
用外部 DNS 时,Netlify 建议把子域名(比如 www.example.com)设为主域名。原因是根域名只能解析到负载均衡的地址,用不上 Netlify CDN 的直接 DNS 路由,而子域名可以。
第二步:添加 DNS 记录
根域名指向 Netlify 的负载均衡,www 用 CNAME 指向站点的 netlify.app 地址。在阿里云解析、DNSPod 或其他 DNS 服务商处添加:
| 类型 | 主机记录 | 记录值 |
|---|---|---|
ALIAS、ANAME 或拉平的 CNAME |
@ |
apex-loadbalancer.netlify.com |
A(服务商不支持上面几种时) |
@ |
75.2.60.5 |
CNAME |
www |
brave-curie-12345.netlify.app |
根域名上只保留这一条记录。Netlify 的排错文档指出:根域名上多余的 A 记录和残留的 AAAA 记录都会导致证书签不下来,因为它的负载均衡不支持 IPv6。如果改用 Netlify DNS,要确认注册商处的 NS 已经换成 Netlify 的,并且先关掉 DNSSEC,Netlify DNS 不支持 DNSSEC。
用下面的命令确认外界看到的结果,AAAA 那条应该什么都不返回:
dig +short example.com A
dig +short example.com AAAA
dig +short www.example.com CNAME
第三步:检查 CAA 记录
没有 CAA 记录就不受限制。如果有 CAA,必须放行 Let's Encrypt,否则签发失败。想只允许 Netlify 自己的 Let's Encrypt 账户签发,可以照 Netlify 文档带上 accounturi:
example.com. 300 IN CAA 0 issue "letsencrypt.org;accounturi=https://acme-v02.api.letsencrypt.org/acme/acct/54403714"
写成普通的 0 issue "letsencrypt.org" 也可以,只是任何 Let's Encrypt 账户都能签。同一域名下还有其他业务用别家 CA 的(比如阿里云上的 DigiCert 证书),要另外加对应的 issue 记录。可以用 CAA 记录生成器 生成、用 CAA 检测工具 验证。
通配符证书和自定义证书
域名使用 Netlify DNS 时,Netlify 会自动签通配符证书,这个域名下所有 Netlify 站点的子域名都能立刻用上 HTTPS。同一个域名下超过 5 个子域名别名时,可能撞上 CA 的频率限制,Netlify 建议在添加别名之前就上传自己的通配符证书,或者先联系支持。
安装自有证书:进入 Domain management > HTTPS,选择 “Set Custom Certificate”,准备好三样东西:
- X.509 PEM 格式的证书(通常是 .crt 文件);
- 申请证书时用的私钥,不能加密码;
- CA 提供的中间证书链。
Netlify 会检查证书和站点域名是否匹配、DNS 是否指向 Netlify,然后安装。通配符或多域名证书装在一个站点上,会自动用于它覆盖的其他站点。自定义证书不会自动续期,到期前要在 CA 那边续好重新安装,或者换回 Netlify 托管证书。
验证
配置正确时,颁发者是 Let's Encrypt,SAN 列表里同时有 example.com 和 www.example.com。用 SSL 证书检查 从外部检查,或者在终端运行:
curl ssl.sh/example.com
再看服务器实际发出的证书:
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
| openssl x509 -noout -issuer -subject -ext subjectAltName -dates
控制台 Domain management > HTTPS 里也能看到证书状态。
自动续期
Netlify 托管证书会按需自动生成和续期,前提是 DNS 一直指向 Netlify、CAA 一直放行 Let's Encrypt。Let's Encrypt 从 2025 年 6 月 4 日起不再发到期提醒邮件,默认有效期也会在 2027 年 2 月 10 日缩短到 64 天、2028 年 2 月 16 日缩短到 45 天。自定义证书和重要域名建议加到 ssl.sh 监控(开发中)。
常见报错和处理
Netlify 签不出证书,绝大多数是 DNS 记录配错了。以下提示文字来自 Netlify 的排错文档:
- We could not provision a Let's Encrypt certificate for your custom domain:依次检查根域名的 A/ALIAS 记录、
www的 CNAME、AAAA记录、DNSSEC 和 CAA,改好后重新申请。 - Waiting on DNS propagation(超过 48 小时):Netlify 要等全球都解析到正确记录。其他地方还缓存着旧记录时,只能等 TTL 过期,可以用多个公共 DNS 对比结果。
- DNS verification failed:记录指向了别处。如果站点前面还套了 Cloudflare 代理之类的服务,要先关掉,Netlify 必须自己终止 TLS 才能签证书。
- Missing certificate,或点 “Provision certificate” 后没反应:通常还是上面这些 DNS 问题,用 Let's Debug 测一下域名。
- Your domain doesn't appear to be served by Netlify:域名解析到了别的主机,按第二步改记录。
- Certificate provisioning has been pending for over 24 hours:Netlify 前 24 小时每 10 分钟重试一次,之后两天每小时一次。超过 24 小时还没证书,基本可以断定是 DNS 配错了。
- HTTPS not working or showing "connection not secure" warnings:有时证书只签到了
example.com,没签到www.example.com或某个别名。点 “Renew certificate” 一般能解决,不行就找支持修复。也可以参考 NET::ERR_CERT_COMMON_NAME_INVALID。 - example.com is not resolvable with a resolver that validates DNSSEC:用 Netlify DNS 时注册商或旧 DNS 那边还开着 DNSSEC。去那边关掉(DNSViz 能看出是哪一层开的),或者保留 DNSSEC、改用外部 DNS。
CAA 报错见 CAA 记录阻止签发。都试过还不行,就带上站点名、用的是外部 DNS 还是 Netlify DNS、已经试过的步骤去联系 Netlify 支持。
常见问题
Netlify 的证书是哪家 CA 签的?
Let's Encrypt。DNS 指向 Netlify 后,它会为自定义域名和所有域名别名自动申请证书,并自动续期。
Netlify 怎样才能用上通配符证书?
把域名的 DNS 交给 Netlify DNS。这样 Netlify 会自动签一张通配符证书,覆盖这个域名下所有 Netlify 站点的子域名。用外部 DNS(比如阿里云解析、DNSPod)时是按主机名单独签证书,或者自己上传通配符证书。
在 Netlify 上传的自定义证书会自动续期吗?
不会。Netlify 文档明确说自定义证书不会自动续期,要你在 CA 那边续好后重新安装;想自动续期就换回 Netlify 托管证书。
证书一直显示 Waiting on DNS propagation 怎么办?
清理冲突的 DNS 记录,等旧记录的 TTL 过期后重新申请。Netlify 要求全球各地看到的记录都正确才会签发,常见障碍是残留的 AAAA 记录、根域名有多条 A 记录、旧服务商开着 DNSSEC,或 CAA 没放行 Let's Encrypt。改完后等旧记录的 TTL 过期,再重新申请。