2012-03-31 5 views
5

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

  • Узел v0.6.14
  • CentOS 6.2/2.6.32
  • узла XMPP 0.3.2
  • OpenSSL 1.0.0

подключения Код

var j = new xmpp.Client({ 
    jid : '[email protected]', 
    password : 'pass', 
    host : 'chat.domain' 
}); 

После прослеживания кода, кажется, он застревает сразу после того, как он пытается обновить соединение к защищенному соединению. Это происходит в starttls.js в starttls функция.

Пара .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) 

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

Любые идеи?

Спасибо!

+1

Какое серверное программное обеспечение вы используете? (Я собираюсь высунуть шею и угадать ... Openfire?) – MattJ

+0

да, openfire. –

+0

Вы когда-нибудь получали эту работу? У нас такая же проблема с openfire и с последней версией node + node_xmpp. – dustyburwell

ответ

0

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

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

A wireshark След предоставит нам данные, чтобы быть в состоянии сказать наверняка.

0

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

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

Gist здесь: https://gist.github.com/jamescoletti/6591173

Надеется, что это полезен для кого-то.

+0

Этот текст удален. Можно ли восстановить? – user1074891