目录

使用 Python 安装 Certbot 实现 Let’s Encrypt SSL 证书自动续签

Certbot

在当前的网络安全环境下,为网站启用 HTTPS 已经成为基本要求。主流浏览器会对未启用 SSL 的网站给出明显的安全警告,而近年来各大云服务商与免费 CA 机构提供的 SSL 证书有效期已进一步缩短至 30 天。如果运维人员忘记及时续签证书,极易导致 HTTPS 失效,进而引发业务中断。

为了解决这一问题,Let’s Encrypt 提供了完全自动化的免费证书颁发服务,而 Certbot 是其官方推荐的证书管理工具。本文将介绍一种基于 Python(pip)安装 Certbot 的方式,实现 SSL 证书的自动申请与自动续签,避免因证书过期带来的运维风险。


一、环境准备

本文示例环境如下:

  • 操作系统:Linux(Debian / Ubuntu)
  • Python 版本:Python 3
  • Web 服务器:Nginx 或 Apache
  • 域名:已正确解析至服务器公网 IP

二、安装 Python 与 pip

如果系统尚未安装 Python 3,可使用以下命令进行安装:

sudo apt update
sudo apt install python3 python3-pip -y

验证安装结果:

python3 --version
pip3 --version

三、使用 pip 安装 Certbot

通过 Python 的 pip 工具安装最新版 Certbot:

sudo pip3 install certbot

安装 Web 服务器插件

根据实际使用的 Web 服务器选择对应插件:

Nginx 环境:

sudo pip3 install certbot-nginx

Apache 环境:

sudo pip3 install certbot-apache

安装完成后,验证 Certbot 是否安装成功:

certbot --version

如提示命令不存在,可使用完整路径:

/usr/local/bin/certbot --version

四、申请 Let’s Encrypt SSL 证书

Nginx 示例

sudo certbot --nginx

Apache 示例

sudo certbot --apache

Certbot 将自动完成以下操作:

  • 验证域名所有权
  • 申请并安装 SSL 证书
  • 自动修改 Web 服务器配置
  • 启用 HTTPS 访问(可选自动跳转)

证书默认存放路径如下:

/etc/letsencrypt/live/你的域名/

五、配置证书自动续签(关键步骤)

由于 Let’s Encrypt 证书的有效期仅为 30 天,必须依赖自动化机制进行续签。
通过 pip 安装的 Certbot 不会自动创建系统定时任务,因此需要手动配置 cron。

1. 确认 certbot 可执行路径

which certbot

通常返回:

/usr/local/bin/certbot

2. 创建 cron 定时任务

编辑 root 用户的 crontab:

sudo crontab -e

在文件末尾添加以下内容:

0 12 * * * /usr/local/bin/certbot renew --quiet

该任务含义如下:

  • 每天中午 12 点自动检查证书状态
  • 当证书剩余有效期较短(接近过期)时自动续签
  • --quiet 选项用于减少无关输出,仅在出现错误时记录日志

六、验证自动续签配置

在正式投入使用前,应通过模拟方式验证续签流程是否正常:

sudo certbot renew --dry-run

若看到如下提示,说明续签机制已配置成功:

Congratulations, all simulated renewals succeeded

七、补充说明与注意事项

  1. 端口要求

    • HTTP-01 验证方式需确保 80 端口对外开放
    • HTTPS 服务需开放 443 端口
  2. 证书更新后的服务重载
    Certbot 默认会尝试自动重载 Nginx / Apache。
    如需自定义行为,可使用:

    certbot renew --deploy-hook "systemctl reload nginx"

结语

在 SSL 证书有效期已缩短至 30 天 的背景下,手动续签已经不具备可行性。
借助 Python + Certbot + Let’s Encrypt,我们可以将证书管理完全自动化,从根本上消除因证书过期导致的服务中断风险。

一次部署,长期受益,让 HTTPS 成为真正“无需维护”的基础设施。

更多关于 的文章
关注创客出手公众号

关注创客出手