CentOS7 解决宝塔面板 Let's Encrypt 证书自动续签问题

宝塔面板确实是目前可以说最好用的面板,但是在这里奉劝各位,千万不要上宝塔论坛,有什么问题尽量自己解决,不能解决的上 Google 搜索看看有没有人遇到并解决,实在没有就将就用,反正去了论坛反馈也没啥作用。
https://i2.wp.com/www.x-death.com/wp-content/uploads/2019/03/105017fw9u4xzpragt8a9p.png?w=640&ssl=1
自动续签失败的原因在于,CentOS7 通过宝塔面板部署 Let's Encrypt 证书偶尔会将工作目录设置为 /.acme.sh 这个目录,而并非计划任务中的 /root/.acme.sh
这就导致了计划任务一直在 /root/.acme.sh 查找需要续签的证书,而不是 /.acme.sh
首先,你需要将面板更新到最新版本,因为在宝塔面板 5.x 的时候,有过一段时间将证书存放在 /www/server/panel/vhost/ssl,而最新版本(5.9 或者 6.x)已经统一使用 acme.sh,并且存放在默认目录中(即:/root/.acme.sh,其实后面这个合理一些),并且本文主要是解决 acme.sh 的自动续签问题。
既然偶尔会将工作目录设置为 /.acme.sh,那其实我们的解决办法就很简单。
第一种是修改计划任务中设置的工作目录。
在你常用的终端中,输入 crontab -e 并找到 acme.sh 相关计划任务命令,将其中的 --home "/root/.acme.sh" 修改为 --home "/.acme.sh" 然后保存修改即可。
不过这种有个缺点,你不能通过 acme.sh --renew 命令手动续签,也不能通过 acme.sh --list 获取证书到期时间。
所以这里推荐使用第二种解决方法,将 /.acme.sh 修改为符号链接。

\cp -R -f /.acme.sh/* /root/.acme.sh/
rm -rf /.acme.sh
ln -s /root/.acme.sh /.acme.sh

第一条命令是将现有的文件保存到 acme.sh 的工作目录,第二条命令是删除这个文件夹以及里面所有内容,因为前面我们以及使用 cp 进行复制,所以可以放心删除,不放心可以修改为 mv 进行重命名,最后一条是建立符号链接。
这样就完美解决宝塔面板 Let's Encrypt 证书自动续签问题,并且在必要的时候可以自行手动发起续签。

加入对话

1条评论

  1. 我觉得你应该一开始介绍第二种方法,第一种方法和之前写的字太多了。
    另外rm -rf /.acme.sh这应该是非必要

留下评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

%d 博主赞过: