使用Let's Encrypt实现DV证书免费续杯

最后更新: 2026-08-14

DV(Domain Validation,域名验证)证书OV(Organization Validation,组织验证)证书 是 HTTPS 证书(SSL/TLS)的两种主要类型,核心区别在于 验证深度信任展示

对于个人开发者亦或是绝大多数小型项目和初创企业中,免费 DV 证书是绝对的主流。

而在过去2023 年底之前),各大云厂商(阿里云、腾讯云、华为云等)确实提供有效期为 1 年 的免费 DV 证书(主要由 TrustAsia 亚洲诚信等机构提供)。

但从 2023 年 开始,各大 CA 机构(证书颁发机构)及云平台陆续调整了策略,将免费 DV 证书的单次签发有效期统一缩短到了 3 个月(90 天)

现在几乎没有公信力极高的“1 年期无脑免费”证书了,而为了高效应对“3 个月免费证书”,我结识了 Let's Encrypt (可颁发免费证书的主流公共信任 CA 机构)以及 ACME (自动证书管理环境)。

ACME 自动化运行的工作原理

  1. 发起请求:客户端向 Let's Encrypt 服务器(ACME Server)申请为目标域名签发证书。

  2. 触发挑战(Challenge Validation):Let's Encrypt 需要验证你确实拥有该域名的控制权,最常见的验证方式有两种:

    • HTTP-01 验证:Let's Encrypt 随机给出一个令牌,客户端将其写入网站的 /.well-known/acme-challenge/ 路径下,Let's Encrypt 访问该 URL 成功即通过验证。
    • DNS-01 验证:客户端通过 DNS 服务商的 API(如 Cloudflare、阿里云),在域名解析中自动添加一条 _acme-challenge 的 TXT 记录,Let's Encrypt 检索到该 TXT 记录即通过验证(通配符证书 *.domain.com 必须使用此方式)。
  3. 签发与下载:验证通过后,Let's Encrypt 签发新证书,客户端将其下载保存到服务器指定目录。

  4. 服务重载(Reload):客户端触发重载指令(如 nginx -s reload),使 Web 服务加载最新内存证书,整个过程用户无感知。

使用 Certbot

我采用的方案则是Let's Encrypt 官方推荐,适合单台 Linux/Nginx 服务器。

  • 第一步:安装 Certbot
Bash
1sudo apt update 2sudo apt install certbot python3-certbot-nginx -y
  • 第二步:一键签发并自动配置 Nginx
Bash
1sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
  • 第三步:确认自动化定时任务安装 Certbot 后,系统会自动生成一个 systemctl 定时器或 Cron 任务,每天自动运行两次 certbot renew只有当证书剩余有效期不足 30 天时,它才会真正去续签,未到期时运行不做任何操作。
  • 第四步:测试自动续签流程运行以下模拟命令,如果不报错,代表未来 100% 会自动续签成功:
Bash
1sudo certbot renew --dry-run

其他

如果想要移除某个域名

Bash
1# 找到你想删除的证书准确名称(Certificate Name) 2sudo certbot certificates 3 4# 找到目标证书的 Certificate Name 5sudo certbot delete --cert-name olddomain.com