返回列表

Ubuntu / Debian 系统下安装 Certbot 及手动申请证书教程

2026-07-21 Certbot Let's Encrypt DNS

本教程适用于国内网络环境(在不翻墙的情况下),指导如何使用系统自带的包管理器安装官方 Certbot,并通过手动 DNS 挑战的方式申请 Let's Encrypt 证书。

1. 安装 Certbot 客户端

在国内服务器上,通过标准的 APT 包管理器可以直接从镜像站下载安装 Certbot,无需依赖海外特有渠道。

在终端中依次运行以下命令:

Bash

# 更新本地软件包索引
sudo apt update

# 安装 certbot 核心程序
sudo apt install -y certbot

2. 执行手动申请命令

安装完成后,直接在终端运行带手动交互参数的申请命令。使用 --preferred-challenges dns 指定通过配置 DNS TXT 记录来验证域名所有权(此操作不需要服务器对外开放 80 端口,且 Let's Encrypt 的验证接口在国内网络直接畅通,无需翻墙)。

以申请 yourdomain.com 及其泛域名 *.yourdomain.com 为例:

Bash

sudo certbot certonly \
  --manual \
  --preferred-challenges dns \
  -d yourdomain.com \
  -d "*.yourdomain.com"

注意:如果是初次执行certbot命令,系统可能会提示填写邮箱以及同意条款

3. 配合交互完成身份验证(核心步骤)

执行命令后,终端会进入交互状态并暂停,屏幕上会输出类似以下的内容:

Plaintext

Please deploy a DNS TXT record under the name:
_acme-challenge.yourdomain.com
with the value:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Before continuing, verify the record is deployed.
Press Enter to Continue

此时千万不要按回车,按照以下步骤去添加记录:

  1. 登录你的域名服务商控制台(如腾讯云、阿里云等)。
  2. 进入该域名的 DNS 解析设置,添加一条新的解析记录。
  3. 记录类型 选择:TXT
  4. 主机记录(Host)填写:_acme-challenge
  5. 记录值(Value)填写:终端屏幕上显示的那一长串随机 Hash 值。
  6. 如果同时申请了根域名和泛域名,终端可能会先后提示你添加两条不同的 TXT 记录,直接在控制台添加两条同名的 TXT 记录即可。

4. 触发验证与下载证书

在控制台添加完 TXT 记录后,建议先在本地终端验证解析是否在国内生效(无需回车,直接新开一个终端窗口运行):

Bash

nslookup -q=txt _acme-challenge.yourdomain.com

如果输出的文本内容与终端提示的 Hash 值一致,说明国内 DNS 已经同步成功。

此时回到原先暂停的 Certbot 终端窗口,按下回车。Certbot 的验证服务器会自动检索该 TXT 记录,验证通过后,终端会打印出成功提示,并将证书安全地存放在以下默认路径:

  • 证书链文件(配置 Nginx 等 Web 服务器时使用): /etc/letsencrypt/live/[yourdomain.com/fullchain.pem](https://yourdomain.com/fullchain.pem)
  • 私钥文件: /etc/letsencrypt/live/[yourdomain.com/privkey.pem](https://yourdomain.com/privkey.pem)

📌 国内不翻墙环境下的避坑要点

  1. Let's Encrypt 接口国内完全可用: Let's Encrypt 的 ACME API 接口和 OCSP 验证节点在国内网络没有受到限制,无论是使用 Certbot 还是 acme.sh,在不翻墙的国内服务器上都可以直接连接并完成证书的申领和续期。
  2. 切勿直接用于自动化续期: 通过 --manual(手动模式)申请的证书,在 90 天到期时无法通过 certbot renew 自动续期。因为每次续期,Let's Encrypt 都会要求生成全新的随机 TXT 验证码,人工必须重新手动去改一次 DNS 解析。如果后续需要完全无人值守的自动化,需要转为使用带有云厂商 API 凭证的插件或工具。