使用Certbot自动申请和使用Let's Encrypt的SSL证书

前言

接着上一篇文章:1Panel自动续期SSL证书 | 花猪のBlog,本文重新选择使用Certbot实现SSL证书的自动续期。


操作

  1. 键入以下命令安装certbot

    1
    sudo apt update && sudo apt install certbot

  2. 安装成功后,键入以下命令可以看到说明。

    1
    sudo certbot -h

  3. 安装好管理工具之后, 需要申请证书,键入以下命令:

    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:需要签发证书的域名

    接着需要输入一个邮箱。

  4. 根据提示键入A同意,继续下一步。

  5. 根据提示键入Y,继续下一步。

    这里它会提示一个报错,该报错因人而异(不一定会发生),因为我设置了二级域名(twikoo评论)。这个错误的核心原因是 www.twikoo.cnhuazhu.top 这个二级域名没有配置对应的 A/AAAA 类型 DNS 记录,导致服务器无法解析该域名的 IP 地址。

    我这里直接忽略,继续下一步。

  6. 申请证书完成后证书会存在在/etc/letsencrypt/live/cnhuazhu.top目录:

  7. 查看一下没有问题后打开nginx的配置文件修改证书载入路径:

    编辑/etc/nginx/sites-enabled/cnhuazhu.conf,修改其中的ssl_certificatessl_certificate_key字段:

    编辑/etc/nginx/sites-enabled/twikoo.conf,修改其中的ssl_certificatessl_certificate_key字段:

  8. 保存退出之后,使用nginx的test命令测试:

    1
    sudo nginx -t

    如果没有问题的话,就reload一下:

    1
    sudo service nginx reload

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

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

    1
    touch cronfile

  11. 在其中键入如下指令:

    1
    echo '15 2 * */2 * root certbot renew' > ./cronfile

    说明:命令15 2 * */2 * root certbot renew表示在每隔两个月的每一天的凌晨2:15,自动执行Certbot证书续期命令,以确保服务器的SSL证书不会过期。

  12. 最后键入如下指令运行该脚本:

    1
    crontab -u root ./cronfile

  13. 执行成功后键入如下指令查看计划:

    1
    crontab -l

  14. 最后可以键入如下指令测试续期流程是否正常:

    1
    sudo certbot renew --dry-run

    注意:参数--dry-run是模拟续期,不会实际修改证书。


后记

不知道这个方法是否能成功,暂且先列此贴记录一下操作。

等到2026-04-08之后再看一下。如果该日期之后此贴依然存在,说明此方法可行!(如果失败则继续研究一下改进方案)

参考内容: