前言
今天网站突然提示 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
会发现
此种情况一般是宝塔面板安装时或者安装后有交叉 Python 版本存在,Python2 和 3 的 pip 混乱导致 dnspython 无法安装 此时执行:Traceback (most recent call last): File "acme_v2.py", line 40, in import dns.resolver ImportError: No module named dns.resolver
pip install dnspython
pip2 install dnspython
后再次申请证书即可正常使用
最新版不存在这个问题,如果上面命令还是无法解决你的问题最好是安装新版宝塔面板为妙。版权声明:本文为原创文章,版权归 Mark's Blog 所有,转载请注明出处!
本文链接:https://www.quchao.net/BT-SSL.html
友情提示:如果博客部分链接出现404,请留言或者联系博主修复。
挺喜欢页面title的切到其它窗口的看不见我,哈哈。那个logo显示的小狗是咋实现的?
哈哈,用了一个js实现的
看了你的文章,觉得非常不错…想与贵站互相友情链接
建站知道网-http://wozhidaole.com.cn
如果同意的话,回复一下后互相上链接!
名称:建站知道网
本站网址: http://wozhidaole.com.cn/
本站描述: | 新老站长都喜欢的技术性优秀网站!
文章不错,支持一下!
目前我还在用着虚拟主机(╯‵□′)╯︵┴─┴
会用上服务器的
做个记号,我也是碰到同样的问题。设置成自动每次还是手动去改。
这个直接收藏就行,我再多台机器上已经测试成功才发出来的