宝塔面板确实是目前可以说最好用的面板,但是在这里奉劝各位,千万不要上宝塔论坛,有什么问题尽量自己解决,不能解决的上 Google 搜索看看有没有人遇到并解决,实在没有就将就用,反正去了论坛反馈也没啥作用。
自动续签失败的原因在于,CentOS 7 通过宝塔面板部署 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 证书自动续签问题,并且在必要的时候可以自行手动发起续签。
“CentOS 7 解决宝塔面板 Let's Encrypt 证书自动续签问题”上的一条回复
我觉得你应该一开始介绍第二种方法,第一种方法和之前写的字太多了。
另外rm -rf /.acme.sh这应该是非必要