Certbot 证书申请本质在做什么?

当你执行一次证书申请(certbot certonly 或带插件的命令)时,本质是:

  1. 向证书颁发机构(CA)申请证书

    Certbot 默认对接的是 Let’s Encrypt(也可以对接其他 CA)。

  2. 证明"这个域名是你的",让 CA 信任你有权申请这个域名的证书。

    这是核心步骤,叫 域名所有权验证(Domain Validation, DV)

    Let’s Encrypt 会要求你完成一个挑战(challenge),常见两种:

    • HTTP-01(最常见)
    • DNS-01(最强大)
    • TLS-ALPN-01(较少用)
  3. 验证成功后签发证书

    验证通过后:

    • CA 签发证书
    • 证书存储在 /etc/letsencrypt/live/域名/
  4. 后续自动续期

    Certbot 会:

    • 自动续期(通常 60 天前)
    • 通过 hook 或自动 reload 服务

三种方式对比

方式是否需要端口是否支持通配符是否推荐
HTTP-01tcp:80不支持推荐(简单)
DNS-01不需要支持推荐(强大)
TLS-ALPN-01tcp:443不支持不推荐(复杂)

完整申请流程总结(重点)

一次完整申请可以理解为:

1. Certbot 发起申请
2. 生成验证 token
3. 部署验证(HTTP 或 DNS)
4. Let’s Encrypt 验证
5. 签发证书
6. 保存到本地
7. 设置自动续期

安装Certbot

使用 snap 安装:

1
2
3
4
5
6
apt install snapd -y

snap install core
snap refresh core

snap install --classic certbot

/snap/bin 加入全局 PATH

1
2
echo 'export PATH=$PATH:/snap/bin' >> ~/.bashrc
source ~/.bashrc

如果你用的是 root(你现在就是),也可以写到:

1
2
echo 'export PATH=$PATH:/snap/bin' >> /root/.bashrc
source /root/.bashrc

检查

1
which certbot

正常应该输出:

/snap/bin/certbot

(可选) 安装 certbot-dns-cloudflare

如果你打算使用 DNS-01 验证方式 ,请执行下面的命令安装插件.

snap set certbot trust-plugin-with-root=ok

snap install certbot-dns-cloudflare

Tip

snap set certbot trust-plugin-with-root=ok 命令做了什么?

相当于告诉系统:

“我信任 Certbot 插件,可以让它们用 root 权限运行”

本质是:解除 snap 对插件的权限限制,让 DNS 插件能正常工作,用 DNS 插件必须执行.