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:
Это было решено только недавно, но на данный момент нет официального релиза с исправлением. Краткосрочное решение этой проблемы - удалить SleekXMPP и переустановить SleekXMPP, указав версию 1.3.1:
sudo pip3 uninstall sleekxmpp
sudo pip3 install sleekxmpp==1.3.1
Возврат к версии 1.3.1 решает эту проблему для меня. Возможно, это больше не будет проблемой в SleekXMPP 1.3.4.