2012-10-21 85 views
5

我很难与XMPP(Prosody)建立连接。但是,如果我使用PSI,它会正常工作,并请求您的建议。XMPP SSL握手失败

这里是我的Python代码片段:

client = xmpp.Client(host) 
client.connect(server=(host,port)) 
client.auth(username, passwd,resource='', sasl=1) 
client.sendInitPresence() 

在调试模式:

DEBUG: dispatcher warn Registering protocol "error" as <class 'xmpp.protocol.Protocol'>(http://etherx.jabber.org/streams) 
DEBUG: socket  sent <?xml version='1.0'?><stream:stream xmlns="jabber:client" to="localhost" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" > 
DEBUG: socket  error Socket error while receiving data 
         Traceback (most recent call last): 
          File "/usr/local/lib/python2.7/dist-packages/xmpp/transports.py", line 161, in receive 
          try: received = self._recv(BUFLEN) 
          error: [Errno 104] Connection reset by peer 
DEBUG: client  stop Disconnect detected 
DEBUG: socket  error Socket operation failed 
         Traceback (most recent call last): 
          File "/usr/local/lib/python2.7/dist-packages/xmpp/transports.py", line 161, in receive 
          try: received = self._recv(BUFLEN) 
          error: [Errno 104] Connection reset by peer 
DEBUG: socket  error Socket error while receiving data 
DEBUG: client  stop Disconnect detected 

**Prosody logs :** 
Oct 20 23:46:39 c2s94ba718  info Client connected 
Oct 20 23:46:39 c2s94ba718  info Client disconnected: ssl handshake failed 
Oct 20 23:46:39 c2s94ba718  info Destroying session for (unknown) ((unknown)@(unknown)) 
Oct 20 23:48:57 c2s96052a0  info Client connected 
Oct 20 23:48:57 c2s96052a0  info Client disconnected: ssl handshake failed 
Oct 20 23:48:57 c2s96052a0  info Destroying session for (unknown) ((unknown)@(unknown)) 

在这个任何建议,将不胜感激。目标是连接到XMPP服务器并通过python加入MUC。

+1

哪个XMPP Python包你正在使用吗? –

+1

您可以更改日志级别以调试韵律并尝试连接,并在此处发布日志? –

回答

0

正如我看到您使用的是Python 2.7,请确保您已更新到最新版本(2.7.11),因为最近有一些SSL更改可能会破坏很多代码。

0

当我没有在服务器端提供证书链时,Pidgin(libpurple 2.10.11)中出现此错误。

我解决了这个通过在服务器上的证书的末尾添加CA-束(即中间证书):

cat /path/to/ica.crt >> /path/to/prosody.crt 

另见https://prosody.im/doc/certificates#certificate_chains进一步信息