# HTTPS 证书申请与自动续期

证书申请需要证明域名控制权。HTTP 验证依赖正确解析和可访问的验证路径；DNS 验证则需要正确的 DNS 记录或受限 API 凭据。

更新日期：2026-09-16

规范地址：https://stock.iftalking.com/guides/https-certificates/

## 1. 先把域名和验证路径接通

HTTPS 需要证书包含你正在访问的域名，服务器使用匹配的私钥，并能提供完整证书链。只把网址从 http 改成 https 不会自动获得证书。

申请前确认 A/AAAA 指向正确位置，服务器时间同步，网站可访问。HTTP-01 验证通常需要公网 80 端口；DNS-01 通过 DNS TXT 验证，适合通配符证书或不能开放 HTTP 的环境。选择方式后，要同时考虑下次如何自动续期。

## 2. 宝塔中为单个站点配置证书

进入“网站 → 对应站点 → SSL”。使用面板支持的 ACME/Let's Encrypt 入口申请，或在已有证书入口填写匹配的私钥与证书链。域名列表只包含自己控制且需要服务的名称。

![宝塔站点的 SSL 证书配置入口](https://stock.iftalking.com/tutorial-media/bt-ssl.png)

*图示说明：宝塔官方文档公开界面截图（2026-09-16 核对）。图中的域名、IP、旧版软件列表和日期仅作界面示例，安装版本按正文与应用要求选择。*

HTTP 验证失败时先检查解析、IPv6、80 端口和验证目录是否被重定向或认证拦截。DNS 验证使用最小权限令牌，限制到所需域名区域，不能把整个 DNS 账户的主密钥贴进公开教程。

## 3. 手工 Nginx 使用 Certbot

已经由宝塔或 Caddy 管理证书时，先沿用现有管理方式，避免多个客户端同时改配置。手工 Nginx 环境可按 Certbot 官方安装选择器安装适合系统的版本，再备份 Nginx 配置并申请。

```bash
sudo nginx -t
sudo certbot --nginx -d example.com -d www.example.com
```

这会启动域名验证并可能修改 Nginx 配置。只填写已经解析并准备使用的域名；没有 www 站点就不加它。按提示完成账户和证书选项，成功后检查生成的站点配置与证书路径。

## 4. 验证 HTTPS 后再强制跳转

```bash
curl -I https://example.com/
curl -I http://example.com/
```

HTTPS 应返回预期站点且没有证书错误。确认后让 HTTP 通过 301/308 跳到 HTTPS，避免多次跳转。WordPress 还要核对站点地址和数据库里的旧资源链接，不能只在代理层跳转就认为所有图片已改为 HTTPS。

如果有 CDN，浏览器到 CDN 与 CDN 到源站是两段连接，应使用有效源站证书和正确的加密模式。不要用关闭源站验证或浏览器忽略错误作为永久修复。

## 5. 实测续期，不只看定时器存在

```bash
sudo certbot certificates
sudo certbot renew --dry-run
systemctl list-timers --all
```

按安装方式检查自动续期任务。续期成功后，Web 服务还需要加载新证书；已有集成通常会处理，手动部署应配置正确的 deploy hook。DNS API 令牌失效、目录迁移或端口关闭，都可能导致几周后的续期失败。

HSTS 会让浏览器长期强制 HTTPS，确认所有相关域名和子域名都准备好后再考虑启用，初次部署不必直接加 preload。

## 6. 常见故障按证书链路处理

域名不匹配，检查 SAN 与访问地址；证书不受信任，检查链是否完整、是否用到测试证书；跳转循环，检查代理传递的 HTTPS 信息和应用站点地址；部分用户失败，检查错误 AAAA 或旧缓存。

维护时记录证书到期时间并设置外部检查。更多见[域名解析](https://stock.iftalking.com/guides/dns/)、[WordPress 迁移](https://stock.iftalking.com/guides/wordpress-migration/)与[站点监控](https://stock.iftalking.com/guides/uptime-monitoring/)。


## 完成后检查

外部检查主域名和所有子域名，确认没有混合内容；监控证书到期日并保留续期日志。

## 参考资料

- [letsencrypt.org · 项目文档](https://letsencrypt.org/docs/challenge-types/)
- [eff-certbot.readthedocs.io · 项目文档](https://eff-certbot.readthedocs.io/en/stable/using.html)
- [宝塔官方文档](https://docs.bt.cn/getting-started/deploy-ssl)
