SleekXMPP: "Срок действия сертификата истек".

В настоящее время я пытаюсь использовать модуль sleekxmpp в Python3.5 для подключения к jabber.at, службе XMPP. SSL-сертификаты Jabber.at выпускаются Let's Encrypt.

Проблема у меня заключается в том, что при попытке войти в свою учетную запись jabber.at с помощью sleekxmpp я получаю следующую ошибку:

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, но sleekxmpp по-прежнему считает, что срок действия сертификата истек, хотя сертификат действителен до 2022 года. К сожалению, я могу войти в свою учетную запись XMPP с помощью Pidgin, и сертификат, автоматически сохраняемый Pidgin (который вы можете найти в ~/.purple/ в Linux), точно такой же, как тот, который я скачал непосредственно из 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 ответ

Решение

Через месяц я смог найти решение своей проблемы.

Оказывается, эта проблема вызвана регрессом в SleekXMPP, представленном в версии 1.3.3:

GitHub: регрессия из 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.

Другие вопросы по тегам