宝塔面板无法自动续签 SSL 问题解决方法

一只鱼 2年前 (2021) 一只鱼
3,639 0

前言

今天网站突然提示 SSL 过期,宝塔不是可以自动续期吗?貌似之前经常需要手动去续,带着这个疑惑分了下是什么问题?接下来就是分析过程了。


分析

仔细看了一下日志,应该是是acme_v2的脚本问题。

|-共需要续签 1 张证书
|-正在续签第 1 张,域名: ['www.quchao.net']..
|-正在创建订单..
|-正在获取验证信息..
|-正在验证域名..
|-正在发送CSR..
|-正在下载证书..
Traceback (most recent call last):
File "/www/server/panel/class/acme_v2.py", line 692, in save_cert
self.sub_all_cert(key_file, pem_file)
File "/www/server/panel/class/acme_v2.py", line 714, in sub_all_cert
if to_cert_init['issuer'] != cert_init['issuer'] and to_cert_init['issuer'].find("Let's Encrypt") == -1:
AttributeError: 'NoneType' object has no attribute 'find'

|-续签成功!

看似成功实际上根本就没有成功。 于是定位到 /www/server/panel/class/acme_v2.py 714 行,

if to_cert_init['issuer'] != cert_init['issuer'] and to_cert_init['issuer'].find("Let's Encrypt") == -1:

这条语句出现了问题,应该改成

if to_cert_init['issuer'] != cert_init['issuer'] and str(to_cert_init['issuer']).find("Let's Encrypt") == -1:

即可正常签到。


相关

PS:还有老旧版本会存在一键证书卡死在“正在申请证书”
先执行cd /www/server/panel/class
再执行python acme_v2.py 会发现

Traceback (most recent call last): File “acme_v2.py”, line 40, in import dns.resolver ImportError: No module named dns.resolver

此种情况一般是宝塔面板安装时或者安装后有交叉 Python 版本存在,Python2 和 3 的 pip 混乱导致 dnspython 无法安装 此时执行:

pip install dnspython
pip2 install dnspython

后再次申请证书即可正常使用 最新版不存在这个问题,如果上面命令还是无法解决你的问题最好是安装新版宝塔面板为妙。

版权声明:一只鱼 发表于 2021-03-30 20:08:11。
转载请注明:宝塔面板无法自动续签 SSL 问题解决方法 | 轻谈浅唱 – Mi导航

暂无评论

暂无评论...