无法使用node-xmpp连接到xmpp服务器
我正在努力让node-xmpp与我们在这里的jabber服务器一起工作。 我能够使用talk.google.com工作得很好,我可以使用adium或ichat连接到我们的内部服务器。
- 节点v0.6.14
- CentOS 6.2 / 2.6.32
- node-xmpp 0.3.2
- OpenSSL 1.0.0
连接代码
var j = new xmpp.Client({ jid : 'user@domain', password : 'pass', host : 'chat.domain' });
在跟踪代码之后,似乎在尝试将连接升级到安全连接之后就会卡住。 这发生在starttls函数的starttls.js中 。
这个pair.on('secure')事件永远不会被调用,即使在settimeout之后我打印出一对,它仍然不会被授权。 在这一点上,我没有看到任何数据。
经过很长时间的坐在那里(几个微小)它打印出一个这样的错误
throw arguments[1]; // Unhandled 'error' event ^ Error: 139644497663968:error:14077438:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert internal error:s23_clnt.c:674: at CleartextStream._pusher (tls.js:508:24) at CleartextStream._push (tls.js:334:25) at SecurePair.cycle (tls.js:734:20) at EncryptedStream.write (tls.js:130:13) at Socket.ondata (stream.js:38:26) at Socket.emit (events.js:67:17) at TCP.onread (net.js:367:14)
如果重要,服务器正在使用自签名的证书。
有任何想法吗?
谢谢!
这看起来像是在服务器不期望的时候发送TLS握手,所以服务器没有发回握手信号。
一种可能性是,您正在将老式的TLS(握手优先)与实现start-TLS的服务器交谈。 在你真实的代码中,你是否设置了legacySSL参数? 你确定你正在与目标盒上的XMPP服务器通话吗?
一个wireshark跟踪会给我们的数据可以肯定的说。
我遇到了同样的问题:尝试执行与一个特定的Openfire XMPP服务器安装的TLS握手连接挂起(虽然其他人工作正常)。
几乎失去了我的想法后,我最终修改了nodet xmpp的starttls.js以使用tls.connect()并强制SSLv3,令我惊讶的是它工作。
请点击这里: https : //gist.github.com/jamescoletti/6591173
希望这对某人有用。