bg-tutorials

如何在 Apache 和 NGINX 上安装 ACME SSL 证书

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

在 Apache 和 Nginx 上使用 ACME 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-release
sudo 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 证书所需的一切信息,包括自动更新、清晰验证和必要时的完全控制。

立即订购 SSL 证书, 可节省 10% 的费用!

快速发行, 强大加密, 99.99% 的浏览器信任度, 专业支持和 25 天退款保证. 优惠券代码 SAVE10

龙飞行的详细图像
撰写人

经验丰富的内容撰稿人, 擅长 SSL 证书. 将复杂的网络安全主题转化为清晰, 引人入胜的内容. 通过有影响力的叙述, 为提高数字安全作出贡献.

Avatar of Sergiu Rosca
Technical Review by Sergiu Rosca

Sergiu Rosca is the core web developer behind SSL Dragon. He manages the technical infrastructure, platform performance, and backend integrations that keep the site running smoothly and securely. At SSL Dragon, Sergiu shares practical insights on web development, site optimization, and technical troubleshooting.

All SSL Dragon installation guides are tested on live server environments and undergo a strict peer-review process to ensure your infrastructure remains secure. Read our full Editorial Policy.