OneInStack自动续期letsencrypt证书失败问题

非常不幸,博客证书竟然真的失效了,在我认知中OneInStack letsencrypt 证书都是可以自动续期的,而现实打脸了我就说明这脚本自动续期是错的。

网上找了下手动强制续期的魔法咒语

/usr/local/python/bin/certbot renew –force-renew –renew-hook “/etc/init.d/nginx reload”

运行之后并没有什么卵用。是一点反应都没有,连报错都没有。

究其原因,我竟然发现CerBot文件是个0大小的文件,这能有用才真的是奇怪了。

到这里之后,本来我应该到./addons 试试能不能重装CerBot,直接配置吧? 这条路说不定是能走通的。

不过我当时首先想的是更新了OneInStack

./upgrade.sh

更新之后却发现addons里面竟然再也没有手动自动配置证书的功能了!因为新版本OneInStack抛弃了CerBot,改用了acme.sh。

这就是说,我想配置证书,要么自己重新手动安装兼容的CerBot,或是自己慢慢找对应配置文件位置自己直接配置证书,要么就只有删除虚拟主机重建继续沿用OneInStack的一整套方案。

这里必须说说OneInStack的奇葩特性。配置证书功能竟然和新建虚拟主机功能是捆绑的,这就好像强行规定换衣服之前必须吃饭,奇葩到不行了。

手动安装兼容CerBot(EEF的版本是独立的,没看到和Python有关系,而且我还安装失败了)和自己配置证书这种事情,我担心我真动起手来,还必须去花时间研究OneInStack是怎么写配置的,这不是吃饱了撑的吗?

所以只能沿用删除虚拟主机,让这脚本再次自己配置acme.sh吧。

于是就是备份主机了。

首先

./backup_setup.sh

运行之后会生成一份备份配置,

./backup.sh

运行之后就能得到网站的完整备份,包括网站目录和数据库。不过我们需要的仅仅是网站目录文件。记下这个压缩文件名字。

现在删除虚拟主机

./vhost.sh del

英文输入法状态删除正确的主机,其他的都不用管。

重新新建主机

./vhost.sh

重新输入和以前完全一样的站点名字,以前怎么写的现在就怎么写。和以前的区别是,现在生成免费证书再也不用CerBot,全自动会套用acme.sh,而且会自动在Crontab生成一个定期任务续期。

站点既然新建好了,现在我们就把文件拷贝回去吧。

cd /data/backup

cp  备份文件名  /data/wwwroot

cd /data/wwwroot

tar zxvf 备份文件名  -C /data/wwwroot/

好了,现在重新打开网站,应该能发现网站已经一切恢复正常。

现在删除过时的CerBot任务

crontab -e

找到关于CerBot的那行,键盘敲击 dd,再输入:wq 退出编辑即可。

如果3个月后还是没更新证书,那么回到Home目录(ROOT目录),手动试试这个

acme.sh –cron –debug 2

注意上面是两根-横线

出于安全考虑,最好是为服务器新建一个快照。

参考:

记录Oneinstack一键环境无法更新Let’s Encrypt证书解决笨方法

https://blog.wateroot.com/linux/lets-encrypt-https.html

http://www.daniao.org/945.html


已发布

分类

来自

标签:

评论

发表回复

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

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