невозможно подключиться к серверу xmpp с помощью node-xmpp

Я работаю над тем, чтобы node-xmpp работал с jabber-сервером, который у нас есть здесь. Мне удалось заставить его работать с talk.google.com, и я могу подключиться к нашему внутреннему серверу с помощью adium или ichat.

  • Узел v0.6.14
  • CentOS 6.2 / 2.6.32
  • узел-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)

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

Любые идеи?

Спасибо!


person Space Devin    schedule 31.03.2012    source источник
comment
Какое серверное программное обеспечение вы используете? (Я собираюсь высунуть шею и угадаю ... Openfire?)   -  person MattJ    schedule 01.04.2012
comment
У вас когда-нибудь это работало? У нас такая же проблема с openfire и последней версией node + node_xmpp.   -  person dustyburwell    schedule 24.01.2013


Ответы (2)


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

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

Трассировка wirehark предоставит нам данные, которые позволят определить наверняка.

person Joe Hildebrand    schedule 10.05.2012

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

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

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

Надеюсь, это кому-то будет полезно.

person James Coletti    schedule 17.09.2013
comment
Эта суть была удалена. Возможно ли восстановление? - person user1074891; 14.05.2017