# cPanel 配置 SSL：AutoSSL 免费证书与安装购买的证书

> 在 cPanel 虚拟主机上用 AutoSSL（Let's Encrypt）免费签发并自动续期证书，或安装购买的证书：查看 SSL/TLS Status、排查验证失败、强制 HTTPS。

Source: https://ssl.sh/zh/guides/cpanel-ssl/
Last updated: 2026-11-10

cPanel 的 AutoSSL 会为账户里的每个域名免费签发并自动续期 Let's Encrypt 证书；购买的证书在 Manage SSL sites 里粘贴证书、私钥和 CA bundle 安装。证书生效后，在 Domains 页面打开 Force HTTPS Redirect。

以截至 2026 年 11 月的 cPanel & WHM 为准，菜单名称按官方文档的英文界面写，中文界面里是对应的译名。

## 国内用户先了解的几点

cPanel 上的 SSL 默认自动配置，国内用户出问题主要在 DNS 解析、CDN 和备案上。

cPanel 是收费的商业面板，国内读者接触到它，大多是买了海外的虚拟主机（共享主机），主机商给的就是 cPanel 账户。这种情况下你通常只有 cPanel 用户权限，没有 WHM，AutoSSL 的提供商和开关由主机商控制；第一步要改的设置，需要向主机商提工单。

国内环境下常见的问题：

- **域名解析在国内服务商**：很多人域名在阿里云或腾讯云注册，解析也放在云解析或 DNSPod。只要 `A` 记录指向 cPanel 服务器，AutoSSL 的 HTTP 验证就能通过，不需要把 DNS 迁过去；但通配符证书需要服务器自己管理权威 DNS，这种情况下签不了。
- **套了 CDN**：在 cPanel 站点前面接了国内或海外 CDN 的，验证请求会先到 CDN，AutoSSL 经常因此失败。可以在验证期间暂时直连，或者让 CDN 把 `/.well-known/` 路径原样回源。
- **主机在中国大陆**：所有在中国大陆运行的网站都需要 ICP 备案，没有备案的域名可能被服务商拦截，验证也随之失败。海外主机不涉及备案。
- **不再有到期提醒邮件**：Let's Encrypt 从 2025 年 6 月 4 日起不再发送到期提醒邮件，AutoSSL 出了问题时，最好有一个独立的外部监控。

## 前提条件

AutoSSL 要通过互联网验证域名，所以 DNS 必须指向这台服务器。

- 一个 cPanel 账户；要改提供商设置需要 WHM 的 root 权限（或者找主机商）。
- 每个域名和 `www` 的 `A` 记录都指向服务器，例如 `203.0.113.10`。
- 验证期间前面没有 CDN 代理，或者 DNS 托管在服务器上，可以走 DNS 验证。
- 安装购买的证书时：证书文件、CA bundle（中间证书），以及为它生成的私钥。

## 第一步：确认 AutoSSL 已启用（WHM）

AutoSSL 的提供商和开关在 WHM 里设置，默认提供商是 Let's Encrypt。在 WHM 打开 **SSL/TLS → Manage AutoSSL**，在 Providers 标签页选择 Let's Encrypt（默认值），不要选 Disabled，提示时接受服务条款。在 Manage Users 里确认这个账户启用了 AutoSSL。想立即为所有用户运行一次，用 root 执行：

```bash
/usr/local/cpanel/bin/autossl_check --all
```

只有 cPanel 用户权限的，这一步交给主机商确认。SSL/TLS Status 里看不到任何 AutoSSL 状态时，多半是主机商把提供商设成了 Disabled，提工单确认。

## 第二步：在 cPanel 查看覆盖情况

SSL/TLS Status 页面列出每个域名的证书状态和 AutoSSL 失败原因。在 cPanel 打开 **Security → SSL/TLS Status**，筛选 Unsecured 和 Has AutoSSL Problems，每一行问题都会说明这个域名为什么没能通过验证。用不到的域名（比如废弃的子域名）可以排除掉，免得它们拖慢或干扰 AutoSSL 运行。

## 第三步（购买的证书）：安装证书

购买的证书要把证书、私钥和 CA bundle 三样一起安装。在 cPanel 的 SSL/TLS → Certificate Signing Requests 里生成 CSR，或者用 [CSR 生成器](https://ssl.sh/zh/tools/csr-generator/)，拿去购买证书。签发后打开 **Security → SSL/TLS → Manage SSL sites**，选中域名，分别粘贴证书（CRT）、私钥（KEY）和 CA bundle（CABUNDLE），点 Install Certificate。CA bundle 必须填，否则部分手机和小程序会报证书链不完整，原理见 [安装中间证书](https://ssl.sh/zh/guides/install-intermediate-certificate/)。

从云厂商下载的证书也可以这样装。以阿里云为例，Apache 格式的压缩包里 `_public.crt` 是站点证书、`_chain.crt` 是中间证书，分别贴进 CRT 和 CABUNDLE，`.key` 贴进 KEY。

## 第四步：强制 HTTPS

证书生效后，在 cPanel 的 **Domains** 页面为每个域名打开 Force HTTPS Redirect。如果你习惯用 `.htaccess`，就用 [HTTP 跳转 HTTPS](https://ssl.sh/zh/guides/redirect-http-to-https/) 里的规则，不要在开关之外再叠一层跳转。

## 验证

配置正确时，颁发者是 Let's Encrypt（AutoSSL）或你购买的 CA，证书链完整，到期时间在未来。用 [SSL 证书检查](https://ssl.sh/zh/tools/ssl-checker/) 逐个检查域名，或在终端运行：

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

## 自动续期

AutoSSL 签发的证书不需要任何操作：AutoSSL 每晚随 cPanel 的更新进程运行，只要验证仍能通过，就会在到期前替换证书。会让它失效的是 DNS 迁走、加了 CDN 代理，或者重写规则拦住了 `/.well-known/`。在 WHM 的 **Manage AutoSSL → Options** 里设置通知级别，让问题能通知到你；日志在 `/var/cpanel/logs/autossl`。

Let's Encrypt 默认证书 2027 年 2 月 10 日起改为 64 天，2028 年 2 月 16 日起改为 45 天，AutoSSL 续得会更勤，但仍然是自动的。购买的证书不会被 AutoSSL 续期；公网证书最长 200 天，2027 年 3 月 15 日起 100 天，手动重装容易漏，可以改由 AutoSSL 签发。建议把域名都加到 [ssl.sh 监控](https://ssl.sh/zh/monitor/)（开发中）。

## 常见问题排查

- **HTTP DCV 失败 / 内容不匹配**：`.htaccess` 跳转或安全插件拦截了 `/.well-known/acme-challenge/`，把这个路径排除掉。
- **域名没有解析到这台服务器**：DNS 指向了 CDN 或旧主机，改好记录，或改用 DNS 验证。
- **CAA 记录阻止签发**：见 [CAA 记录阻止签发](https://ssl.sh/zh/errors/caa-record-prevents-issuance/)。
- **同一域名证书过多**：反复重签触发了 Let's Encrypt 的限制，见 [Let's Encrypt 频率限制](https://ssl.sh/zh/errors/lets-encrypt-rate-limit/)。
- **HTTPS 能打开但没有小锁**：页面加载了 HTTP 资源，见 [混合内容警告](https://ssl.sh/zh/errors/mixed-content-warning/)。
