SleekXMPP:"证书已过期。"

时间:2017-09-15 01:26:07

标签: python python-3.x ssl encryption sleekxmpp

我目前正在尝试使用Python3.5中的sleekxmpp模块连接到jabber.at,一个XMPP服务。 Jabber.at的SSL证书由Let's Encrypt发布。

我遇到的问题是,当我尝试使用sleekxmpp登录我的jabber.at帐户时,出现以下错误:

INFO     Negotiating TLS
INFO     Using SSL version: TLSv1
ERROR    Certificate has expired.

我已尝试在Ubuntu 16.04,Manjaro GNOME 17和Windows 10上解决此问题,并在每台计算机上安装了全新的Python,sleekxmpp和所有sleekxmpp依赖项。它并没有什么不同。

在我的每台机器上,我安装了Let's Encrypt Authority X3 certificate,但是sleekxmpp仍然认为证书已过期,即使证书有效期到2022年。令人沮丧的是,我能够登录到我的使用Pidgin的XMPP帐户,以及Pidgin自动保存的证书(您可以在Linux下的〜/ .purple /下找到)与我直接从Let的加密下载的证书完全相同。

我已尝试手动将sleekxmpp.xmlstream.xmlstream.py:125中的ssl版本更改为ssl.PROTOCOL_SSLv23,但这也不起作用。我还尝试在sleekxmpp.xmlstream.xmlstream.py:140中手动指定Let的加密.crt文件的路径,但我仍然遇到同样的问题。

我应该注意,我确实在每台计算机上安装了dnspythonpyasn1pyasn1_modules。虽然我可以通过卸载pyasn1成功登录我的jabber.at帐户,或者通过将sleekxmpp.xmlstream.xmlstream.py:140设置为None来明确忽略证书,但这不是

我能做些什么吗?我已经在这几天了,而且我还没能在谷歌上找到任何有用的解决方案。

我感谢任何帮助!

1 个答案:

答案 0 :(得分:4)

经过一个多月,我找到了解决自己问题的方法。

事实证明,这个问题是由版本1.3.3中引入的SleekXMPP中的回归引起的:

GitHub: Regression from 1.3.1

最近才解决,但截至目前,该修复程序尚未正式发布。这个问题的短期解决方案是卸载SleekXMPP,并重新安装SleekXMPP,指定版本1.3.1:

sudo pip3 uninstall sleekxmpp
sudo pip3 install sleekxmpp==1.3.1

恢复版本1.3.1为我解决了这个问题。也许这将不再是SleekXMPP 1.3.4中的问题。