如果您正在运行网络服务器,那么使用 HTTPS 确保服务器安全是一项基本标准。借助 ACME(自动证书管理环境)协议,您可以通过Certbot 等工具自动签发和更新 SSL 证书。

在本指南中,您将学习如何在不同的 Linux 发行版中使用 Certbot在 Apache 和 NGINX 上安装 ACME 证书。我们将介绍基于 Debian 的系统和基于 RHEL 的系统,在需要时进行说明,并指导你完成从安装到自动更新的所有过程。
开始之前
在开始之前,请检查这一点:
- 您拥有服务器的sudo 或 root 访问权限
- 您的域名通过 DNS 指向服务器的公共 IP 地址
- 防火墙或云提供商安全组中的端口 80 和 443已打开
- 您的系统是最新的并受支持
第 1 步 – 在操作系统上安装 Certbot
Certbot 是我们用来申请和更新 SSL 证书的 ACME 客户端。我们将为每个支持的操作系统进行设置说明。请选择与你的服务器相匹配的操作系统。
带 APT 的 Ubuntu LTS 版本
更新软件包,使用首选的网络服务器插件安装 Certbot:
阿帕奇
sudo apt update
sudo apt install certbot python3-certbot-apache
NGINX:
sudo apt update
sudo apt install certbot python3-certbot-nginx
支持 APT 的 Debian 系统
过程与 Ubuntu 相同:
sudo apt update
sudo apt install certbot python3-certbot-apache # for Apache
sudo apt install certbot python3-certbot-nginx # for NGINX
在 Debian 系统上,通过 APT 安装 Certbot 是最直接的选择。如果您喜欢使用 Snap(最新版本),请向下滚动到下面的 Snap 部分。
AlmaLinux 或 Rocky Linux(兼容 RHEL)
首先启用 EPEL 资源库:
sudo dnf install epel-releasesudo dnf update
然后使用您选择的插件安装 Certbot:
阿帕奇
sudo dnf install certbot python3-certbot-apache
NGINX:
sudo dnf install certbot python3-certbot-nginx
替代方案:通过 Snap 安装 Certbot(所有系统)
如果您想直接从源代码获取最新版本,请使用 Snap。
1.安装 Snap(如果尚未安装):
sudo apt install snapd # Ubuntu/Debian
sudo dnf install snapd # AlmaLinux/Rocky
2.安装并链接 Certbot:
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
可选:使用 pip 安装 Certbot(用于自定义设置)
这种方法适用于高级用户或没有 Snap 或操作系统软件包的自定义环境。只有在以下情况下才可使用
- 您正在虚拟环境中运行 Certbot
- 您只需使用最少的容器
- 您的操作系统不完全支持 snapd、apt 或 dnf
使用 pip 安装 Certbot:
python3 -m pip install --upgrade certbot
这将安装核心 Certbot 工具,但不会设置自动更新,也不会安装 Apache 或 NGINX 插件。您需要手动配置一切
如果您不确定这意味着什么,请返回并使用 APT、DNF 或 Snap 说明。
您还可以使用 pip 安装插件(如 NGINX 插件):
python3 -m pip install certbot-nginx
只有当系统环境需要完全控制或隔离时,才使用 pip。
步骤 2 – 申请并安装 ACME 证书
主要有两种方法:全自动方法或使用 EAB(外部账户绑定)凭证的特定提供商方法。下文将介绍这两种方法。
选项 A:全自动(标准 ACME)
让 Certbot 处理一切–请求、验证、安装和重新加载服务器配置。
阿帕奇
sudo certbot --apache
NGINX:
sudo certbot --nginx
你会被问到
- 保护哪个(些)域
- 是否将所有 HTTP 流量重定向到 HTTPS
- 您的续订提醒电子邮件
Certbot 在幕后负责验证和网络服务器配置。
方案 B:使用外部 ACME 提供商(如 Sectigo)和 EAB
如果提供商要求外部账户绑定,请使用此方法:
sudo certbot --nginx \
--non-interactive \
--agree-tos \
--email [email protected] \
--server https://acme.sectigo.com/v2/DV \
--eab-kid YOUR_EAB_KID \
--eab-hmac-key YOUR_EAB_HMAC_KEY \
--domain example.com \
--domain www.example.com \
--cert-name my-website-cert
将--nginx 替换为--apache 用于 Apache 设置。
注册 ACME 账户时,您将从证书提供商处获得--eab-kid 和--eab-hmac-key 。
选项 C:在手动模式下使用 Certbot
如果不想让 Certbot 修改网络服务器配置,或使用自定义设置,可以手动申请证书。
下面介绍如何使用 webroot 方法进行操作:
sudo certbot certonly --webroot \
-w /var/www/html \
-d example.com \
-d www.example.com \
--email [email protected] \
--agree-tos \
--non-interactive
- –certonly告诉Certbot签发证书,但不安装证书
- -w指定网站的根目录(必须可通过 80 端口公开访问)
发布后,使用位于以下位置的证书文件手动配置网络服务器:
/etc/letsencrypt/live/yourdomain.com/
注意 无论您选择哪个 ACME 提供商,都将使用此路径,除非您使用高级标记(–config-dir、–work-dir)覆盖存储目录。
在配置中应用证书路径后,请确保重新加载网络服务器。
步骤 3 – 检查一切正常
在浏览器中访问你的域名。在 Chrome 浏览器上应该能看到安全挂锁或成功加载的页面。仔细检查服务器是否在运行:
sudo systemctl status apache2 # Debian/Ubuntu (Apache)
sudo systemctl status httpd # AlmaLinux/Rocky (Apache)
sudo systemctl status nginx # All systems (NGINX)
并从终端检查证书:
openssl s_client -connect yourdomain.com:443
在输出中查找有效日期和您的医疗服务提供者的 CA 名称。
第 4 步 – 设置自动续订
ACME 协议支持证书自动更新,Certbot 可通过内置的 systemd 定时器或 cron 作业无缝处理。不过,更新行为取决于证书提供商:
免费 CA(如 Let’s Encrypt)颁发的证书有效期为 90 天,并支持频繁的更新检查。
商业 CA(如 Sectigo 或 Digicert)通常通过 ACME 签发有效期为 1 年的证书,但仍遵循 ACME 更新流程。Certbot 也会自动处理这些问题,只是频率较低。
检查是否已安排续订
Certbot 默认设置系统计时器或 cron 作业。您可以通过以下方式确认它是否处于活动状态:
systemctl list-timers | grep certbot
这可确保 Certbot 定期检查您的证书(通常每天两次),并仅在更新窗口(通常是到期前 30 天)内更新证书。
最后的话
Certbot 和 ACME 协议让 SSL 管理变得简单。本指南将为您提供在 Apache 和 NGINX 上安装 ACME 证书所需的一切信息,包括自动更新、清晰验证和必要时的完全控制。

