ube*_*k77 3 python encryption ssl python-3.x sleekxmpp
我目前正在尝试使用Python3.5中的sleekxmpp模块连接到XMPP服务jabber.at。Jabber.at的SSL证书由Let's Encrypt颁发。
我遇到的问题是,当我尝试使用sleekxmpp登录到jabber.at帐户时,出现以下错误:
INFO Negotiating TLS
INFO Using SSL version: TLSv1
ERROR Certificate has expired.
Run Code Online (Sandbox Code Playgroud)
我试图在Ubuntu 16.04,Manjaro GNOME 17和Windows 10上解决此问题,并在每台计算机上重新安装了Python,sleekxmpp和sleekxmpp的所有依赖项。没什么不同。
在我的每台计算机上,我都安装了Let's Encrypt Authority X3证书,但是sleekxmpp仍然认为该证书已过期,即使该证书在2022年之前仍然有效。令人沮丧的是,我能够使用Pidgin登录到我的XMPP帐户, Pidgin自动保存的证书(在Linux中可以在〜/ .purple /下找到)与我直接从Let's Encrypt下载的证书完全相同。
我尝试将ssl版本手动更改sleekxmpp.xmlstream.xmlstream.py:125
为ssl.PROTOCOL_SSLv23
,但这也没有用。我也尝试过手动指定中的Let's Encrypt .crt文件的路径sleekxmpp.xmlstream.xmlstream.py:140
,但仍然存在相同的问题。
我要指出,我有dnspython
,pyasn1
和pyasn1_modules
安装在每台机器上。虽然我可以通过卸载成功登录到jabber.at帐户pyasn1
,或者通过将设置sleekxmpp.xmlstream.xmlstream.py:140
为来显式忽略证书None
,但这并不是我的解决方案-我必须加密连接。
有什么我可以做的吗?我已经待了好几天了,但在Google上找不到任何有用的解决方案。
感谢您的帮助!
一个多月后,我能够找到自己的问题的解决方案。
事实证明,此问题是由版本1.3.3中引入的SleekXMPP中的回归引起的:
它只是在最近才得到解决,但是到目前为止,还没有带有此修复程序的正式版本。解决此问题的短期方法是卸载SleekXMPP,然后重新安装SleekXMPP,指定版本1.3.1:
sudo pip3 uninstall sleekxmpp
sudo pip3 install sleekxmpp==1.3.1
Run Code Online (Sandbox Code Playgroud)
恢复到版本1.3.1为我解决了此问题。在SleekXMPP 1.3.4中,也许不再是问题。
归档时间: |
|
查看次数: |
728 次 |
最近记录: |