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

自动续签失败的原因在于,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 证书自动续签问题,并且在必要的时候可以自行手动发起续签。