невозможно подключиться к серверу xmpp с помощью node-xmpp - PullRequest
5 голосов
/ 31 марта 2012

Я работаю над тем, чтобы заставить 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.js в функции starttls .

Событие pair.on ('secure') никогда не вызывается, идаже после того, как я распечатал пару после установленного времени ожидания, он все еще не выглядит авторизованным.На данный момент я не вижу никаких данных в / из.

После долгого сидения (несколько минут) выдается ошибка, которая выглядит следующим образом

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)

Сервер используетсамоподписанный сертификат, если это имеет значение.

Есть идеи?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 сентября 2013

У меня возникла та же проблема: соединение зависает при попытке выполнить рукопожатие TLS с одним конкретным сервером Openfire XMPP (хотя другие работали нормально).

После того, как я почти сошел с ума, я закончил тем, что модифицировал starttls.js, который поставляется с node-xmpp, для использования tls.connect () и форсирования SSLv3, и, к моему удивлению, это сработало.

Суть здесь: https://gist.github.com/jamescoletti/6591173

Надеюсь, это кому-нибудь пригодится.

0 голосов
/ 10 мая 2012

Похоже, вы отправляете рукопожатие TLS, когда сервер его не ожидает, поэтому сервер не отправляет свое рукопожатие обратно.

Одна из возможностей заключается в том, что вы говорите по-старомуTLS (handshake-first) к серверу, который реализует start-TLS.В своем реальном коде вы устанавливаете параметр legacySSL?Вы уверены, что разговариваете с сервером XMPP на целевом компьютере?

A wireshark trace даст нам данные, которые мы сможем сказать наверняка.

...