2012-03-31 15 views
5

私たちが持っているJabberサーバでnode-xmppが動作するようになっています。私はtalk.google.comでうまく動作するようになりました。私はadiumまたはichatで内部サーバに接続できます。node-xmppを使用して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' 
}); 

コードをトレースした後、connをアップグレードしようとした直後に止まったようです安全な接続を確保してください。これはstarttls.jsstarttlsの機能で発生します。

pair.on( 'secure')イベントは決して呼び出されず、settimeoutの後にペアを出力した後でも、まだそれは許可されていません。この時点では、データの出入りがありません。

長い時間そこに座って(いくつかのminites)した後、それはそれが重要な場合、サーバーは、自己署名証明書を使用している

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を実装しているサーバーに旧式のTLS(ハンドシェイクファースト)を話している可能性があります。実際のコードでは、legacySSLパラメータを設定していますか?ターゲットボックスのXMPPサーバーと通信していますか?

wiresharkトレースは、わかりやすいデータを提供します。

0

同じ問題が発生しました。ある特定のOpenfire XMPPサーバーインストールでTLSハンドシェイクを実行しようとしているときに接続がハングします。

私は心配しなくても、node-xmppに同梱されているstarttls.jsをtls.connect()とSSLv3を使用するように修正しました。ここ

要旨:https://gist.github.com/jamescoletti/6591173

・ホープこれは誰かに便利です。

+0

この要点は削除されました。復元することは可能ですか? – user1074891

関連する問題