无法使用node-xmpp连接到xmpp服务器

Dev*_*ith 5 openssl xmpp openfire node.js

我正在努力让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'
});
Run Code Online (Sandbox Code Playgroud)

在遍历代码之后,它似乎在尝试将连接升级到安全连接后立即卡住.这发生在starttls.jsSTARTTLS功能.

("安全")pair.on事件不会被调用,和我一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)
Run Code Online (Sandbox Code Playgroud)

如果重要,服务器正在使用自签名证书.

有任何想法吗?

谢谢!

Joe*_*and 0

这看起来就像您在服务器不期望的情况下发送了 TLS 握手,因此服务器不会发回握手。

一种可能性是您正在与实现启动 TLS 的服务器谈论旧式 TLS(握手优先)。在您的真实代码中,您是否设置了legacySSL参数?您确定正在与目标机器上的 XMPP 服务器通信吗?

Wireshark跟踪将为我们提供能够确定的数据。