2012-03-31 12 views
5

Pracuję nad tym, aby uzyskać pracę węzła-xmpp z serwerem jabber, który mamy tutaj. Udało mi się sprawić, by działał z usługą talk.google.com po prostu dobrze i mogę połączyć się z naszym wewnętrznym serwerem za pomocą adium lub ichat.nie można połączyć się z serwerem xmpp za pomocą węzła-xmpp

  • v0.6.14 Węzeł
  • CentOS 6,2/2.6.32
  • węzła xmpp 0.3.2
  • OpenSSL 1.0.0

kod wtykowy

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

Po przejrzeniu kodu wygląda na to, że utknie on zaraz po próbie uaktualnienia połączenia do bezpiecznego połączenia. Ta sytuacja występuje w starttls.js w funkcji starttls.

Zdarzenie 2 ("bezpieczne") nigdy nie jest wywoływane, a nawet po wydrukowaniu pary po rozliczeniu, nadal nie wydaje się być autoryzowane. W tym momencie nie widzę żadnych danych.

Po długim czasie siedzi tam (kilka minites) drukuje się błąd, który wygląda tak

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) 

Serwer używa samodzielne podpisał cert jeśli się liczy.

Wszelkie pomysły?

Dzięki!

+1

Z jakiego oprogramowania serwerowego korzystasz? (Mam zamiar wystawić szyję i zgadywać ... Openfire?) – MattJ

+0

tak, openfire. –

+0

Czy zdarzyło Ci się, że to działa? Mamy podobny problem z openfire i najnowszą wersją węzła + node_xmpp. – dustyburwell

Odpowiedz

0

Wygląda na to, że wysyłasz uścisk dłoni TLS, gdy serwer się tego nie spodziewa, więc serwer nie wysyła potwierdzenia.

Jedną z możliwości jest rozmowa w starym stylu TLS (handshake-first) z serwerem implementującym protokół start-TLS. Czy w twoim prawdziwym kodzie ustawiasz parametr legacySSL? Czy na pewno rozmawiasz z serwerem XMPP w polu docelowym?

Śledzenie dałoby nam dane, aby móc powiedzieć na pewno.

0

Wystąpił ten sam problem: połączenie zawiesza się podczas próby wykonania uzgadniania TLS z jedną konkretną instalację serwera Xfire Openfire (chociaż inne działały bez zarzutu).

Po tym, jak prawie straciłem rozum, skończyłem modyfikować starttls.js, który jest dostarczany z node-xmpp, aby użyć tls.connect() i wymusić SSLv3 i ku mojemu zdziwieniu zadziałało.

Gist tutaj: https://gist.github.com/jamescoletti/6591173

Nadzieja ta jest przydatna do kogoś.

+0

Ten problem został usunięty. Czy można przywrócić? – user1074891