注册
随时随地免费发布信息
广告二 广告三
安卓下载1 苹果下载2 推广宣传3 骗子曝光4
修复宝塔面板Let's Encrypt证书不自动续签bug

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x

测试环境服务器:使用宝塔面板的正式版(已升级到9.6),能自动续签

生产环境服务器:使用宝塔面板的稳定版,不能自动续签

宝塔面板稳定版9.0.0-lts,存在不能自动续签Let's Encrypt证书的问题,一直没有修复,现在一步步阅读宝塔面板的源代码,手动修复它。

网站有不少let'sEncrypt证书,并且只有几天就过期了,但是执行自动续签计划任务,就告诉你 “没有找到30天过期的SSL......”,明显有bug。

0

这个问题,在宝塔正式版9.3.0已经修复,能正常自动续签。但是稳定版,官方打着不加新功能,只修bug的口号,一直没有修复

0

由于生产服务器宝塔面板安装的是稳定版,稳定版只修BUG,不加新功能。

图片

可能是自动续签功能很少有人用到吧,没人反馈,所以稳定版一直没有修复这个不能自动续签的bug。

这个问题,提醒我们,以后尽量少折腾这种不更新的稳定版,有bug也不会及时修复。

如果你安装的是正式版的宝塔面板,直接升级到最新版问题就修复了。

但是如果你安装的是稳定版,会一直停留在9.0.0,不能通过升级去修复,需要手动修复。

手动修复,跟踪流程:

查看计划任务中的 “续签Lets Encrypt证书” 的任务。

图片

发现使用python执行了一个py文件 /www/server/panel/class/acme_v2.py

图片

打开文件 /www/server/panel/class/acme_v2.py

图片

搜索字符串“没有找到30天内到期的SSL”

图片

定位到函数 renew_cert

图片

手动插入write_log("续签证书xxxxxxxxxxx") 进行手动代码调试,如下图所示

图片

然后打开计划任务的日志

图片

依次点击:清空日志、执行任务、刷新日志。

就能看到自己手动插入的调试日志

图片

经过调试,发现问题最终在 get_ssl_used_site 函数的 if skey == pkey 上,这个等式判断是有问题的

图片

上图是宝塔面板稳定版9.0.0的写法。

再看看宝塔面板正式版9.6.0的写法,如下图所示:

图片

问题生产服务器用了稳定版,没法升级到最新的正式版。官方也没有提供稳定版转正式版的方法,真的很坑。生产服务器也不可能卸载宝塔,再重装正式版

解决方案:

修改代码让它自动续签,废掉这个if判断就可以了。(但是会带来小问题,那些不是用Let's Encrypt的网站也会自动尝试续签)。。

0

还是不要用稳定版,bug也不更新。最好的解决方案是官方给出稳定版转正式版的方法。

困难能让你进步,遇到问题解决问题,通过宝塔面板的源代码学习python。

评论信息
 正在加载留言...
相关推荐

会员榜单

爱在柬埔寨
爱在柬埔寨

发了92个帖

积分
0
创始人
创始人

发了58个帖

积分
1000000
王文鑫手机店
王文鑫手机店

发了7个帖

积分
0
大王王
大王王

发了0个帖

积分
0
柬埔寨华人论坛
柬埔寨华人论坛

发了0个帖

积分
0
张一
张一

发了0个帖

积分
0
VA SREYHEAB
VA SREYHEAB

发了0个帖

积分
0
网站开发
广告位招租