2012-03-31 4 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.js에서 starttls 함수에서 발생합니다.

pair.on ('secure') 이벤트는 호출되지 않으며 settimeout 후에도 쌍을 출력 한 후에도 여전히 권한이 부여되지 않습니다. 이 시점에서 나는 안팎의 데이터를 보지 않는다.

오랜 시간이 앉아 (몇 분 다음은)는 그 중요한 경우, 서버가 자체 서명 인증서를 사용하는이

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

예, 불타고있다. –

+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

관련 문제