我目前正在尝试使用 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、sslixxmpp 和所有 slimxmpp 依赖项。这并没有什么不同。
在我的每台机器上,我都安装了Let's Encrypt Authority X3 证书,但 slimxmpp 仍然认为证书已过期,即使证书有效期至 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
有什么我可以做的吗?我已经在这几天了,我还没有在谷歌上找到任何有用的解决方案。
我很感激任何帮助!