关于xmpp协议发送消息,登录认证SSL报错的问题

Q:错误描述如下

  1. Traceback(most recent call last):
    File"/tails-share/features/scripts/otr-bot.py", line 197,in<module>
    otr_bot.serve_forever()
    File"/usr/lib/python2.7/dist-packages/jabberbot.py", line 715,in serve_forever
    conn = self.connect()
    File"/tails-share/features/scripts/otr-bot.py", line 82,in connect
    conres = conn.connect((conn_server, int(conn_port)))
    File"/usr/lib/python2.7/dist-packages/xmpp/client.py", line 205,in connect
    while not self.TLS.starttls and self.Process(1): pass
    File"/usr/lib/python2.7/dist-packages/xmpp/dispatcher.py", line 303,in dispatch
    handler[‘func‘](session,stanza)
    File"/usr/lib/python2.7/dist-packages/xmpp/transports.py", line 330,inStartTLSHandler
    self._startSSL()
    File"/usr/lib/python2.7/dist-packages/xmpp/transports.py", line 309,in _startSSL
    tcpsock._sslIssuer = tcpsock._sslObj.issuer()
    AttributeError:‘_ssl._SSLSocket‘ object has no attribute ‘issuer‘

该问题是xmpp新版的python中存在的一个bug。可以修改 transports.py 文件进行修复:
修改如下:( - 行标识删除 +行标识添加)

  1. -import socket,select,base64,dispatcher,sys
    +import socket,ssl,select,base64,dispatcher,sys
    from simplexml import ustr
    from client importPlugIn
    from protocol import*
    @@-312,9+312,[email protected]@class TLS(PlugIn):
    """ Immidiatedly switch socket to TLS mode. Used internally."""
    """ Here we should switch pending_data to hint mode."""
    tcpsock=self._owner.Connection
    - tcpsock._sslObj = socket.ssl(tcpsock._sock,None,None)
    - tcpsock._sslIssuer = tcpsock._sslObj.issuer()
    - tcpsock._sslServer = tcpsock._sslObj.server()
    + tcpsock._sslObj = ssl.wrap_socket(tcpsock._sock,None,None)
    + tcpsock._sslIssuer = tcpsock._sslObj.getpeercert().get(‘issuer‘)
    + tcpsock._sslServer = tcpsock._sslObj.getpeercert().get(‘server‘)
    tcpsock._recv = tcpsock._sslObj.read
    tcpsock._send = tcpsock._sslObj.write
时间: 2024-08-24 20:58:00

关于xmpp协议发送消息,登录认证SSL报错的问题的相关文章

Java 实现 SSH 协议的客户端登录认证方式--转载

背景 在开篇之前,让我们先对 SSH 协议有个宏观的大致了解,这样更有利于我们对本文的加深了解.首先要提到的就是计算机网络协议,所谓计算机网络协议,简单的说就是定义了一套标准和规则,使得不同计算机之间能够进行正常的网络通信,不至于出现在一台机器上发出的指令到另一台机器上成了不可认的乱码,SSH 就是众多协议的其中之一.经典的七层 OSI 模型(Open System Interconnection Reference Model)出现后,大大地解决了网络互联的兼容性问题,它将网络划分成服务.接口

【ActiveMQ】消息生产者自动注入报错:Could not autowire. No beans of &#39;JmsMessagingTemplate&#39; type found

使用ActiveMQ过程中,定义消息生产者: package com.sxd.jms.producer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jms.core.JmsMessagingTemplate; import org.springframework.stereotype.Service; import javax.jms.Destination;

解决Win8下安装yii2时,运行php Composer出现SSL报错的问题

今天尝试在win8下运行composer却出现SSL报错: D:\data\www\mmoyu\symapp>php -f %phprc%\composer install Loading composer repositories with package information [Composer\Downloader\TransportException] The "https://packagist.org/packages.json" file could not be

解决Win7下运行php Composer出现SSL报错的问题

以前都在linux环境使用php composer.今天尝试在win7下运行composer却出现SSL报错: D:\data\www\mmoyu\symapp>php -f %phprc%\composer install Loading composer repositories with package information [Composer\Downloader\TransportException] The "https://packagist.org/packages.js

解决Win7下安装composer asset插件时ssl报错的问题

在win7下运行composer,安装asset插件时,出现SSL报错: D:\data\www\mmoyu\symapp>composer global require "fxp/composer-asset-plugin:1.0.0" Loading composer repositories with package information   [Composer\Downloader\TransportException]   The "https://pack

XMPP接受发送消息

在现阶段的通信服务中,各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现.实现了整个及时通信服务协议的互通.有了这个协议之后.使用不论什么一个组织或者个人提供的即使通信服务,都可以无障碍的与其它的及时通信服务的用户进行交流.比如google 公司2005年推出的Google talk就是一款基于XMPP协议的即时通信软件. 以下我们就谈论一下怎样简单的使用XMPP的接收和发送消息 1.在XMPPFra

【Case分享】Exchange 2013登录ECP\OWA报错,事件日志报错15021

环境:DC+Exchange 2013(前后端)   故障: 1.登录ECP.OWA,出现无法显示页面报错   2.EMS无法连接到服务器,报错 排除方法: 查看服务状态是正常的,查看事件日志,发现一大堆httpevent 15021的报错,查看IIS的虚拟目录,发现IIS的default虚拟目录443没绑定证书.Exchange Back End虚拟目录页没绑定证书. 解决方案: 在IIS管理器,编辑绑定虚拟目录,绑定证书即可.

plsql登录数据库,报错“ora-12541:TNS:无监听程序”错误

前一段时间,由于需要修改了数据库的主机名,当时修改数据库主机名使用即时生效的方法修改的,昨天公司停电,重启数据库,登录plsql就报错了 "ora-12541:TNS:无监听程序"错误 主要原因就是由于我修改了主机名,导致配置文件里面的主机名和实际的主机名不相同. 需要修改配置文件 /opt/oracle/product/10.2.0/db_1/network/admin这个路径下的listener.ora  tnsnames.ora这两个配置文件,如果有一个就修改一个,有两个就修改两

解决Ubuntu使用ROOT账户登录图形界面报错认证失败

如图 使用场景 当使用虚拟机安装完Ubuntu系统后,默认创建一个非root账户,当需要使用root权限时,需要每次都使用sudo命令,所以需要开通root账户并使用root登录ubuntu 开启方法 解决方案 第一步 登录普通用户使用sudo或sudo -i切换到root用户打开终端执行命令 sudo passwd root 跟着命令提示,首先输入此账户的密码,再设定Root密码,确认Root密码 然后使用su命令配合刚刚设定的密码登录root账户(必须) 第二步 在终端中以文本模式修改配置文