【发布时间】:2018-02-24 02:27:09
【问题描述】:
我目前正在尝试使用 Python3.5 中的 slimxmpp 模块连接到 XMPP 服务 jabber.at。 Jabber.at 的 SSL 证书由 Let's Encrypt 颁发。
我遇到的问题是,当我尝试使用 slimxmpp 登录我的 jabber.at 帐户时,我收到以下错误:
INFO Negotiating TLS
INFO Using SSL version: TLSv1
ERROR Certificate has expired.
我已尝试在 Ubuntu 16.04、Manjaro GNOME 17 和 Windows 10 上解决此问题,并在每台机器上全新安装 Python、slickxmpp 和所有 slimxmpp 依赖项。没什么区别。
在我的每台机器上,我都安装了Let's Encrypt Authority X3 certificate,但 slimxmpp 仍然认为证书已过期,即使证书有效期到 2022 年。令人沮丧的是,我可以使用 Pidgin 登录到我的 XMPP 帐户,并且 Pidgin 自动保存的证书(在 Linux 中可以在 ~/.purple/ 下找到)与我直接从 Let's Encrypt 下载的证书完全相同。
我尝试将sleekxmpp.xmlstream.xmlstream.py:125 中的ssl 版本手动更改为ssl.PROTOCOL_SSLv23,但这也不起作用。我也尝试在sleekxmpp.xmlstream.xmlstream.py:140 中手动指定 Let's Encrypt .crt 文件的路径,但我仍然遇到同样的问题。
我应该注意到我在每台机器上都安装了dnspython、pyasn1 和pyasn1_modules。虽然我可以通过卸载pyasn1 或通过将sleekxmpp.xmlstream.xmlstream.py:140 设置为None 来显式忽略证书来成功登录我的jabber.at 帐户,但在我的情况下这不是解决方案 - 我必须加密我的连接。
有什么我可以做的吗?我已经在这方面工作了好几天了,但我无法在 Google 上找到任何有用的解决方案。
感谢您的帮助!
【问题讨论】:
标签: python python-3.x ssl encryption sleekxmpp