【问题标题】:unable to connect to xmpp server using node-xmpp无法使用 node-xmpp 连接到 xmpp 服务器
【发布时间】:2012-04-14 16:13:10
【问题描述】:

我正在努力让 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') 事件,即使在设置超时后我打印出 pair 之后,它似乎仍然没有被授权。在这一点上,我没有看到任何数据输入或输出。

在那里坐了很长时间(几次)后,它会打印出一个看起来像这样的错误

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)

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

有什么想法吗?

谢谢!

【问题讨论】:

  • 您使用的是什么服务器软件? (我会伸出脖子猜猜...... Openfire?)
  • 你有没有得到这个工作?我们在使用 openfire 和最新版本的 node + node_xmpp 时遇到了同样的问题。

标签: node.js openssl xmpp openfire


【解决方案1】:

这看起来您正在发送 TLS 握手,而服务器并不期待它,因此服务器没有发回其握手。

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

wireshark 跟踪将为我们提供可以确定的数据。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题:尝试使用一个特定的 Openfire XMPP 服务器安装执行 TLS 握手时连接挂起(尽管其他安装正常)。

    在几乎失去理智之后,我最终修改了 node-xmpp 附带的 starttls.js 以使用 tls.connect() 并强制使用 SSLv3,令我惊讶的是它起作用了。

    这里的要点:https://gist.github.com/jamescoletti/6591173

    希望这对某人有用。

    【讨论】:

    • 此要点已被删除。可以恢复吗?
    猜你喜欢
    • 2013-08-27
    • 2015-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    相关资源
    最近更新 更多