Email:Service@dogssl.com
CNY
Let's Encrypt免费证书申请:Certbot命令行与Webroot插件实操
更新时间:2026-08-13 作者:Let's Encrypt免费证书

Certbot 是 Let's Encrypt 官方推荐的开源命令行证书管理工具,操作简洁、兼容性强,支持证书申请、部署、续费、校验全流程自动化。其中 Webroot 插件凭借无需占用 443 端口、无需停止网站服务、适配绝大多数 Web 服务器的优势,成为生产环境中最常用的证书申请方式。本文将从零开始,完整讲解 Certbot 工具部署、Webroot 插件原理、证书手动申请、站点配置、自动续费及故障排查全流程实操,帮助运维人员快速落地免费HTTPS证书部署。

一、核心基础认知

1. Let's Encrypt证书核心特性

Let's Encrypt证书属于域名验证型证书,仅验证域名所有权,不包含企业信息,适合个人网站、企业官网、业务测试站点等场景。其核心特点为完全免费、全网可信、自动签发,唯一限制是证书有效期仅 90 天,需要定期续费更新,可通过定时任务实现全自动续期,无需人工干预。同时该证书支持单域名多域名证书,不支持泛域名证书,泛域名场景需采用 DNS 验证方式。

2. Certbot 与 Webroot 插件工作原理

Certbot 是基于 ACME 协议开发的证书管理客户端,可与 Let's Encrypt证书服务器交互,自动完成域名验证、证书签发、文件生成等操作。Webroot 插件是 Certbot 主流的域名 HTTP 验证插件,核心原理简单高效:用户提前配置网站公开可访问的根目录,Certbot 会自动在该目录下创建临时验证文件,Let's Encrypt 服务器通过公网 HTTP 协议访问该文件,验证域名归属权,验证通过后即刻签发证书,并自动清理临时验证文件。

相较于 standalone 插件,Webroot 插件最大优势是无需占用 80/443 端口、无需暂停 Web 服务,不会造成网站中断,适配 Nginx、Apache、Caddy 等所有主流 Web 服务器,是生产环境最优选择。

二、部署前置条件

在实操前需完成环境预检,规避证书申请失败问题,核心前置要求如下:

  • 域名解析生效:目标域名已完成 DNS 解析,正确指向服务器公网 IP,可通过 ping 命令测试连通性。
  • 端口对外开放:服务器防火墙、安全组放行 80(HTTP)端口,Webroot 验证依赖 80 端口,443 端口可后续配置放行。
  • Web 服务正常运行:Nginx/Apache 服务正常启动,网站根目录可通过公网 HTTP 正常访问,无拦截、重定向限制。
  • 服务器环境适配:支持 CentOS、Ubuntu、Debian 等主流 Linux 系统,具备 root 或 sudo 管理员权限。

三、Certbot 工具安装实操

不同 Linux 发行版安装命令略有差异,以下提供主流系统的官方标准安装方式,安装完成后可全局调用 certbot 命令。

1. Ubuntu/Debian 系统安装

首先更新软件源,安装依赖组件,再通过 apt 包管理器安装 Certbot:

# 更新软件源
sudo apt update && sudo apt upgrade -y
# 安装certbot核心程序及webroot插件
sudo apt install certbot python3-certbot-webroot -y

2. CentOS/RHEL 系统安装

CentOS 系统需先启用 epel 源,再执行安装命令:

# 安装epel扩展源
sudo yum install epel-release -y
# 安装certbot及webroot插件
sudo yum install certbot python3-certbot-webroot -y

3. 安装校验

安装完成后,执行版本查询命令,若输出版本信息则代表安装成功:

certbot --version

四、Webroot 插件证书申请实操

本文采用纯命令行模式手动申请证书,全程无需交互界面,适配服务器终端操作,支持单域名、多域名证书申请。

1. 核心命令参数说明

Webroot 模式证书申请核心命令参数释义:

  • certonly:仅申请证书,不自动修改 Web 服务配置,避免线上配置出错,生产环境推荐使用。
  • --webroot:指定采用 Webroot 验证模式。
  • -w:指定网站公网可访问的根目录路径,必须与网站配置一致。
  • -d:指定需要绑定的域名,支持多个域名叠加配置。
  • --email:绑定管理员邮箱,用于接收证书过期提醒、运维通知。
  • --agree-tos:自动同意 Let's Encrypt 服务协议。
  • --no-eff-email:拒绝接收机构推广邮件,仅保留运维必要通知。

2. 单域名证书申请

以域名 example.com、网站根目录 /var/www/html 为例,执行完整申请命令:

sudo certbot certonly --webroot -w /var/www/html -d example.com --email admin@example.com --agree-tos --no-eff-email

3. 多域名证书申请

同一证书可绑定主域名与 www 子域名,实现一个证书适配多个站点,只需叠加 -d 参数:

sudo certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com --email admin@example.com --agree-tos --no-eff-email

4. 证书生成路径说明

申请成功后,证书文件默认存储在 /etc/letsencrypt/live/域名/ 目录下,核心文件共4个,用途各不相同:

  • fullchain.pem:完整证书链文件,包含域名证书+中间证书,Web 服务配置核心文件。
  • privkey.pem:网站私钥文件,核心加密密钥,需严格保密,禁止对外泄露。
  • cert.pem:域名单独证书文件。
  • chain.pem:中间证书文件,用于补全证书信任链。

五、Nginx 证书配置实操

证书申请完成后,需手动修改 Nginx 配置文件,实现 HTTPS 加密访问,同时配置 HTTP 强制跳转 HTTPS,契合安全合规要求。

1. 完整配置示例

server {
    listen 80;
    server_name example.com www.example.com;
    # 强制HTTP跳转HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    # 配置SSL证书路径
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    # 基础SSL安全配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    # 网站根目录配置
    root /var/www/html;
    index index.html index.php;
}

2. 配置生效校验

保存配置文件后,先校验 Nginx 配置语法无误,再重启服务:

# 校验配置
sudo nginx -t
# 重启服务
sudo systemctl restart nginx

重启完成后,通过浏览器访问域名,地址栏显示安全锁标识,即为 HTTPS 配置成功。

六、证书自动续费配置

Let's Encrypt证书有效期仅90天,手动续费易遗漏,Certbot 自带自动续费功能,配合系统定时任务可实现永久自动续期。

1. 手动续费测试

先执行续费命令测试环境是否正常,系统会自动检测证书有效期,临近过期则自动更新:

sudo certbot renew --webroot

2. 配置定时自动续费

通过 crontab 设置定时任务,每日凌晨自动检测续费,同时重启 Nginx 生效配置:

# 编辑定时任务
crontab -e
# 添加以下内容
0 3 * * * sudo certbot renew --webroot --quiet && sudo systemctl restart nginx

该任务每日凌晨3点执行证书检测续期,--quiet 参数静默运行,无多余日志输出,续期成功后自动重启 Nginx,确保新证书即时生效。

七、常见故障排查与优化方案

1. 域名验证失败

故障原因多为80端口未放行、网站根目录配置错误、域名解析未生效、站点存在全局 HTTP 重定向拦截验证文件。

  • 解决方案:检查服务器安全组与防火墙放行80端口,核对 -w 参数目录与网站实际根目录一致,临时关闭全站重定向规则,待证书申请完成后再恢复。

2. 自动续费失效

常见原因是定时任务未生效、证书目录权限不足、Nginx 重启失败。

  • 解决方案:通过 crontab -l 查看定时任务配置,修改证书目录权限为可读可执行,手动测试 Nginx 重启命令可用性。

3. 证书浏览器不识别

多为未配置完整证书链,仅配置了 cert.pem 未配置 fullchain.pem。

  • 解决方案:统一使用 fullchain.pem 作为证书文件,补全信任链。

基于 Certbot 命令行 + Webroot 插件的Let's Encrypt证书部署方案,具备免费、稳定、无服务中断、适配性广的核心优势,完全满足绝大多数个人及中小企业网站的 HTTPS 加密需求。整套方案核心亮点在于无需改动业务服务、全程可自动化运维,通过简单的命令即可完成证书申请、部署、续费全流程操作。


Dogssl.com拥有20年网络安全服务经验,提供构涵盖国际CA机构SectigoDigicertGeoTrustGlobalSign,以及国内CA机构CFCA沃通vTrus上海CA等数十个SSL证书品牌。全程技术支持及免费部署服务,如您有SSL证书需求,欢迎联系!
相关文档
立即加入,让您的品牌更加安全可靠!
申请SSL证书