# Render 自定义域名 TLS 证书：DNS、CAA 与通配符

> Render 绑定自定义域名的托管 TLS 证书：根域名和 www 的记录、216.24.57.1、CAA 放行 letsencrypt.org 和 pki.goog、通配符需要的三条 CNAME，以及常见问题处理。

Source: https://ssl.sh/zh/guides/render-custom-domain-tls/
Last updated: 2026-11-10

Render 为每个自定义域名提供免费、全托管的 TLS 证书：证书来自 Let's Encrypt 或 Google Trust Services，到期前自动续期，HTTP 请求也会自动跳转到 HTTPS。操作上只有三步：把域名加到 Web Service 或 Static Site，每个名字加一条 DNS 记录，回控制台点 **Verify**。Render 支持通配符域名，但文档里没有上传自有证书的方式。

步骤和菜单名称以 Render 官方文档为准（截至 2026 年 11 月）。服务地址 `example.onrender.com` 和域名 `example.com` 是示例。

## 速查表

| 问题 | Render 的做法 |
|---|---|
| 自动证书的 CA | Let's Encrypt 和 Google Trust Services |
| 根域名 `example.com` | `ANAME`/`ALIAS` 指向 `example.onrender.com`，或 `A` 记录 `216.24.57.1` |
| `www` 和其他子域名 | `CNAME` 指向 `example.onrender.com` |
| CAA 要放行 | `letsencrypt.org` 和 `pki.goog`（通配符再加 `issuewild`） |
| 通配符证书 | 支持，需要 `_acme-challenge` 和 `_cf-custom-hostname` 两条额外 CNAME |
| 上传自有证书 | 文档未提供 |
| 续期 | 自动 |
| 套餐内含自定义域名 | Hobby 2 个、Pro 15 个、Scale 25 个，超出每个每月 0.25 美元 |

## 国内访问说明

Render 的服务部署在境外区域，从中国大陆访问的延迟和稳定性没有保证，部分网络下可能连不上。拿来跑海外业务的 API、演示项目没问题；如果主要用户在国内，或者网站需要 ICP 备案，建议直接用阿里云、腾讯云等国内云，证书可以参考 [阿里云 SSL 证书](https://ssl.sh/zh/guides/aliyun-ssl-certificate/) 或 [腾讯云 SSL 证书](https://ssl.sh/zh/guides/tencent-cloud-ssl-certificate/)。

## 第一步：在 Render 控制台添加域名

只有 Web Service 和 Static Site 能绑定自定义域名。打开服务，进入 **Settings > Custom Domains**，点 “+ Add Custom Domain”，输入域名后点 “Save”。

Render 会自动把根域名和 `www` 配成一对：

- 添加 `www.example.com`，Render 会同时加上 `example.com`，并把它跳转到 `www`；
- 添加 `example.com`，Render 会同时加上 `www.example.com`，并把它跳转到根域名。

中文域名要先转成 Punycode 再添加。

## 第二步：添加 DNS 记录

先删掉相关名字上的所有 `AAAA` 记录。Render 用 IPv4 提供服务，文档提醒 `AAAA` 记录会导致自定义域名出现异常。

| 名字 | 类型 | 记录值 |
|---|---|---|
| `example.com` | `ANAME` 或 `ALIAS`（或拉平的 CNAME） | `example.onrender.com` |
| `example.com`（备选） | `A` | `216.24.57.1` |
| `www.example.com` | `CNAME` | `example.onrender.com` |

DNS 服务商支持 ANAME/ALIAS 或 CNAME 拉平就优先用；不支持的话，根域名用 `A` 记录 `216.24.57.1`。如果 `dig` 查出 Render 没给过的值，说明服务商开了默认记录或域名转发之类的功能，要关掉。

域名在 Cloudflare 的，Render 要求根域名也用 CNAME（Cloudflare 会自动拉平），**Proxy status** 设为 DNS only，SSL/TLS 模式设为 Full。等 Render 显示证书已签发，才可以打开代理。

## 第三步：检查 CAA 记录

域名没有 CAA 记录就跳过这一步。有的话，Render 用的两家 CA 都要放行，用了通配符域名还要加 `issuewild`：

```dns
example.com.  3600  IN  CAA  0 issue "letsencrypt.org"
example.com.  3600  IN  CAA  0 issuewild "letsencrypt.org"
example.com.  3600  IN  CAA  0 issue "pki.goog"
example.com.  3600  IN  CAA  0 issuewild "pki.goog"
```

Render 两家 CA 都可能用到，只放行其中一家，即使第一张证书签出来了，之后的签发或续期也可能被挡住。可以用 [CAA 检测工具](https://ssl.sh/zh/tools/caa-checker/) 确认。

## 第四步：验证域名

回到 **Custom Domains**，点域名旁边的 “Verify”。验证通过后 Render 签发证书，并把域名标记为已验证。验证失败通常是 DNS 还没生效，等几分钟再点。Render 建议改完记录后去清一下公共 DNS 的缓存（Google Public DNS、Cloudflare 1.1.1.1、OpenDNS 都有清缓存页面），换 NS 之后尤其需要，可以加快验证和签发。

## 通配符域名

通配符域名需要三条 CNAME，缺一条都签不出证书。像添加普通域名一样添加 `*.example.com`，再加上这三条记录：

| 主机记录 | 记录值 |
|---|---|
| `*` | `example.onrender.com` |
| `_acme-challenge` | `example.verify.renderdns.com` |
| `_cf-custom-hostname` | `example.hostname.renderdns.com` |

`_acme-challenge` 让 Render 能通过 Let's Encrypt 的 DNS 验证签发和续期通配符证书；`_cf-custom-hostname` 让 Render 的 DDoS 防护服务商 Cloudflare 能验证你对这个通配符域名的所有权。根域名也必须指向 Render，否则通配符配置会失败。在 Cloudflare 开代理、又只添加了通配符没添加根域名时，根域名的流量也会被送到同一个 Render 服务，所以根域名的记录要设成 DNS only。

## 自有证书

Render 文档里没有上传自有证书的入口：TLS 文档说证书全托管、无需设置，自定义域名文档里也找不到上传选项。按托管证书来规划即可；确实需要 OV/EV 证书或指定 CA，只能在 Render 前面放一层支持自定义证书的代理或 CDN 来终止 TLS。

## 验证

配置正确时，颁发者是 Let's Encrypt 或 Google Trust Services，HTTP 请求返回跳转到 HTTPS 的响应。用 [SSL 证书检查](https://ssl.sh/zh/tools/ssl-checker/) 从外部检查，或者在终端运行：

```bash
curl ssl.sh/example.com
```

确认 Render 返回的证书和跳转：

```bash
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>/dev/null \
  | openssl x509 -noout -issuer -subject -ext subjectAltName -dates
curl -sI http://example.com | head -n 3
```


## 自动续期

Render 在证书到期前自动续期，不需要写定时任务。续期和首次签发依赖的条件一样：DNS 一直指向 Render，CAA 一直放行两家 CA，通配符域名的 `_acme-challenge` CNAME 一直保留。证书有效期还在缩短，Let's Encrypt 默认证书 2027 年 2 月 10 日变成 64 天、2028 年 2 月 16 日变成 45 天，续期越频繁，DNS 改动搞坏续期的机会越多。建议把域名加到 [ssl.sh 监控](https://ssl.sh/zh/monitor/)（开发中）。

## 常见问题排查

- **Verify 失败**：DNS 没生效或填错了。用 `dig example.com`、`dig www.example.com CNAME` 对照上面的表，删掉 `AAAA` 和服务商的默认记录，再点 “Verify”。
- **刚验证完访问报 502 Bad Gateway**：Render 可能还在更新路由规则，等几分钟。
- **套了 Cloudflare 证书一直签不下来**：在 Render 显示证书已签发之前，记录保持 DNS only；通配符的 `_acme-challenge` 记录不要开代理。
- **通配符配置失败**：根域名没指向 Render，或者三条 CNAME 少了一条。
- **CAA 报错**：同时放行 `letsencrypt.org` 和 `pki.goog`，见 [CAA 记录阻止签发](https://ssl.sh/zh/errors/caa-record-prevents-issuance/)。
- **浏览器提示证书和域名不匹配**（[NET::ERR_CERT_COMMON_NAME_INVALID](https://ssl.sh/zh/errors/net-err-cert-common-name-invalid/)）：部分解析器还缓存着旧记录。下次改记录前先把 TTL 调低，并清一下公共 DNS 缓存。
