【问题标题】:SleekXMPP: "Certificate has expired."SleekXMPP:“证书已过期。”
【发布时间】: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 文件的路径,但我仍然遇到同样的问题。

我应该注意到我在每台机器上都安装了dnspythonpyasn1pyasn1_modules。虽然我可以通过卸载pyasn1 或通过将sleekxmpp.xmlstream.xmlstream.py:140 设置为None 来显式忽略证书来成功登录我的jabber.at 帐户,但在我的情况下这不是解决方案 - 我必须加密我的连接。

有什么我可以做的吗?我已经在这方面工作了好几天了,但我无法在 Google 上找到任何有用的解决方案。

感谢您的帮助!

【问题讨论】:

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


    【解决方案1】:

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

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

    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 中将不再是问题。

    【讨论】:

    • 降级到 slimxmpp==1.3.1。还解决了“CERT:无效的证书信任链”。我遇到的错误。
    猜你喜欢
    • 2016-09-21
    • 2014-03-13
    • 2020-09-21
    • 1970-01-01
    • 2016-12-22
    • 2020-09-18
    • 2016-08-09
    • 2021-12-26
    • 2021-01-23
    相关资源
    最近更新 更多