使用Certbot自动申请和使用Let's Encrypt的SSL证书
前言
接着上一篇文章:1Panel自动续期SSL证书 | 花猪のBlog,本文重新选择使用Certbot实现SSL证书的自动续期。
操作
键入以下命令安装certbot。
1
sudo apt update && sudo apt install certbot

安装成功后,键入以下命令可以看到说明。
1
sudo certbot -h

安装好管理工具之后, 需要申请证书,键入以下命令:
1
sudo certbot certonly --webroot -w /var/www/blog-LeadPage -d cnhuazhu.top -d www.cnhuazhu.top -d twikoo.cnhuazhu.top -d www.twikoo.cnhuazhu.top
参数说明:
--webroot、-w:网站静态目录-d:需要签发证书的域名
接着需要输入一个邮箱。

根据提示键入
A同意,继续下一步。
根据提示键入
Y,继续下一步。
这里它会提示一个报错,该报错因人而异(不一定会发生),因为我设置了二级域名(twikoo评论)。这个错误的核心原因是
www.twikoo.cnhuazhu.top这个二级域名没有配置对应的 A/AAAA 类型 DNS 记录,导致服务器无法解析该域名的 IP 地址。
我这里直接忽略,继续下一步。
申请证书完成后证书会存在在
/etc/letsencrypt/live/cnhuazhu.top目录:
查看一下没有问题后打开nginx的配置文件修改证书载入路径:
编辑
/etc/nginx/sites-enabled/cnhuazhu.conf,修改其中的ssl_certificate和ssl_certificate_key字段:
编辑
/etc/nginx/sites-enabled/twikoo.conf,修改其中的ssl_certificate和ssl_certificate_key字段:
保存退出之后,使用nginx的test命令测试:
1
sudo nginx -t

如果没有问题的话,就reload一下:
1
sudo service nginx reload

最后浏览器访问一下网站,查看证书是否启用成功。


因为Let’s Encrypt证书的有效期只有90天,到期的时候我们需要刷新证书的有效期,才可以继续使用。因此就需要编写一个脚本,使用系统的定时器,在将要到期的时候自动进行证书刷新操作。这里使用
touch命令创建一个脚本:1
touch cronfile

在其中键入如下指令:
1
echo '15 2 * */2 * root certbot renew' > ./cronfile

说明:命令
15 2 * */2 * root certbot renew表示在每隔两个月的每一天的凌晨2:15,自动执行Certbot证书续期命令,以确保服务器的SSL证书不会过期。最后键入如下指令运行该脚本:
1
crontab -u root ./cronfile

执行成功后键入如下指令查看计划:
1
crontab -l

最后可以键入如下指令测试续期流程是否正常:
1
sudo certbot renew --dry-run

注意:参数
--dry-run是模拟续期,不会实际修改证书。
后记
不知道这个方法是否能成功,暂且先列此贴记录一下操作。
等到2026-04-08之后再看一下。如果该日期之后此贴依然存在,说明此方法可行!(如果失败则继续研究一下改进方案)
参考内容: