Let's Encrypt Certbot 自动申请免费 SSL 证书,并自动续费

1. 环境以及版本

配置 -版本-
CentOS 7.9.2009
certbot 4.1.1
nginx 1.26.1
python 2.7.5

2. 安装snap

Let’s Encrypt 官方推荐的是使用snap进行安装,所以我们需要先安装snap

2.1 先安装 EPEL

1
yum install -y epel-release

2.2 安装snap

1
yum install snapd

2.3 启动snap服务

1
2
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap

2.4 安装certbot snap包

1
2
snap install core; snap refresh core
snap install --classic certbot

2.5 软链接certbot命令

设置certbot命令软连接,确保certbot命令能够执行

1
ln -s /snap/bin/certbot /usr/bin/certbot

3. 申请证书

certbot的自动化非常方便,只需要一行命令即可完成证书的申请和续签,非常的方便。
我们这里只考虑使用nginx作为web代理的情况

1
certbot --nginx

执行上述命令之后,会提示输入邮箱,邮箱用于接收证书过期的通知。
然后certbot会自动扫描你的nginx配置文件,找到所有的server配置块,然后判断是否有listen 80或者listen 443的配置,如果有,就会自动申请证书。
同时,还会自动配置nginx的ssl证书,重启nginx服务即可生效。

等配置完成之后,可以打开nginx的配置文件查看server配置块内被certbot修改的内容,即已配置好ssl

注意事项: 最开始我是使用的移动云服务器,certbot的自动化配置一直失败,卡在了请求本地部署的web服务的域名时一直超时,然后我在服务器上ping了一下本地部署的服务域名,发现并不能ping通,而通过其他的外部服务器是可以访问的
查询了下移动云的服务器因为一些默认配置导致本机是无法访问自己的你公网ip的,需要在云服务器控制台进行配置修改
之后我在自己的另外一台服务器上重试,是完全可行的,一套命令下来畅通无阻,顺利完成https配置

4. 自动续签

certbot默认有效期是三个月, 如果你想要啥它能自动续签,可以用到linux上的一个定时服务

4.1 设置定时任务

在crontab中添加定时任务,每天凌晨2点执行一次certbot的续签命令

执行crontab的编辑命令

1
crontab -e

在打开的编辑器中添加定时任务, 如下:

1
0 2 * * * certbot renew --quiet --nginx

这段代码的意思是 每天凌晨2点执行一次certbot renew命令, 对nginx的配置进行续签, --quiet参数表示静默模式, 不会有任何输出, --nginx参数表示对nginx的配置进行操作


Let's Encrypt Certbot 自动申请免费 SSL 证书,并自动续费
https://stanlee12.github.io/2025/06/30/certbot-ssl/
作者
stan
发布于
2025年6月30日
许可协议