Отключить проверку сертификата errbot

Я с трудом пытаюсь подключить errbot к серверу dev HipChat из-за недействительного сертификата ssl.

журнал:

21:16:01 DEBUG    sleekxmpp.xmlstream.xmlst Event triggered: ssl_cert
21:16:01 ERROR    sleekxmpp.xmlstream.xmlst Could not match certficate against hostname: chat.btf.hipchat.com
21:16:01 DEBUG    sleekxmpp.xmlstream.xmlst Event triggered: session_end
21:16:01 DEBUG    sleekxmpp.xmlstream.xmlst Event triggered: disconnected
21:16:01 INFO     errbot.core               Disconnect callback, deactivating all the plugins.
21:16:01 DEBUG    sleekxmpp.thirdparty.stat  ==== TRANSITION connected -> disconnected
21:16:01 DEBUG    sleekxmpp.xmlstream.xmlst SEND (IMMED): <stream:stream to='chat.btf.hipchat.com' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>
21:16:01 DEBUG    sleekxmpp.xmlstream.xmlst Event triggered: socket_error
21:16:01 WARNING  sleekxmpp.xmlstream.xmlst Failed to send b"<stream:stream to='chat.btf.hipchat.com' xmlns:stream='http://etherx.jabber.org/streams' xmlns='jabber:client' xml:lang='en' version='1.0'>"
21:16:01 DEBUG    sleekxmpp.xmlstream.xmlst Event triggered: session_end
21:16:01 DEBUG    sleekxmpp.xmlstream.xmlst Event triggered: socket_error
21:16:01 DEBUG    sleekxmpp.xmlstream.xmlst Event triggered: disconnected
21:16:01 INFO     errbot.core               Disconnect callback, deactivating all the plugins.
21:16:01 DEBUG    sleekxmpp.thirdparty.stat  ==== TRANSITION connected -> disconnected
21:16:01 DEBUG    sleekxmpp.xmlstream.xmlst Event triggered: socket_error
21:16:01 ERROR    sleekxmpp.xmlstream.xmlst Socket Error #9: Bad file descriptor

Errbot продолжает проверять сертификат, несмотря на то, что в BOT_IDENTITY я указал "verify": False, а также XMPP_CA_CERT_FILE = Нет в конфигурации.

часть конфига:

BOT_IDENTITY = {
    ## HipChat mode (Comment the above if using this mode)
    'username' : '1_2@chat.btf.hipchat.com',
    'password' : '123qweASD',
    ## Group admins can create/view tokens on the settings page after logging
    ## in on HipChat's website
    'token'    : 'sometoken',
    ## If you're using HipChat server (self-hosted HipChat) then you should set
    ## the endpoint below. If you don't use HipChat server but use the hosted version
    ## of HipChat then you may leave this commented out.
    'endpoint' : 'hipchat.test.intra',
    'verify': False,
}
XMPP_CA_CERT_FILE = None

Любые идеи, как заставить это работать, действительно ценятся.

1 ответ

Решение

Источником этой ошибки является функция проверки, которая проверяет действительность сертификата с точки зрения имени хоста и даты действия.

Значение XMPP_CA_CERT_FILE набор в конфигурации errbot в конечном итоге передается ca_certs в классе XMLStream, где он используется для влияния на cert_policy, Это устанавливает ssl.CERT_NONE но даже в этом случае он все еще вызывает проверку.

Это означает, что в настоящее время вы можете иметь (возможно самозаверяющий) сертификат без действительного доверенного корня, но вам все равно придется убедиться, что имя хоста, к которому вы подключаетесь, совпадает с именем хоста (CN) сертификата. (Это то, что SleekXMPP, базовая библиотека XMPP, используемая errbot, навязывает нам, а не непосредственно что-то от самого errbot).

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