2012-09-20 5 views
1

node.js와 TLS를 사용하여 서버에 대한 클라이언트 연결을 설정하려고하지만 실패합니다.node.js를 사용하여 TLS 클라이언트 연결 디버깅

제 질문은 연결이 실패한 이유에 대한 자세한 정보를 얻는 방법입니다. 이상적으로 핸드 쉐이킹과 인증서 교환을 보여주는 openssl (잘 연결되어 있음)을 사용할 때와 비슷합니다.

현재 내가 얻는 것은 {[Error : socket hang up] code : 'ECONNRESET'}입니다.

인터넷 블로그를 기반으로하는 아래 코드와 같은 것을 사용하고 있습니다.

var tls = require('tls'), 
fs = require('fs'); 

// callback for when secure connection established 
function connected(stream) { 
    if (stream) { 
     stream.write('Hello'); 
    } else { 
     console.log("Connection failed"); 
    } 
} 

// needed to keep socket variable in scope 
var dummy = this; 

// try to connect to the server 
dummy.socket = tls.connect(
{ 
    port: 8000, 
    host: 'dest.server.com', 
    ca: [ 
      fs.readFileSync('C:\\Tools\\Certificates\\TestRoot.pem', 'utf8') 
     ], 
    cert: fs.readFileSync('C:\\Tools\\Certificates\\source.server.com.cert.pem', 'utf8'), 
    key: fs.readFileSync('C:\\Tools\\Certificates\\source.server.com.key.pem', 'utf8'), 
    passphrase: 'password', 
} 
, function() { 
    // callback called only after successful socket connection 
    dummy.connected = true; 
    if (dummy.socket.authorized) { 
     // authorization successful 
     console.log('auth ok'); 
     dummy.socket.setEncoding('utf-8'); 
     connected(dummy.socket); 
    } else { 
     // authorization failed 
     console.log('auth fail'); 
    console.log(dummy.socket.authorizationError); 
    connected(null); 
    } 
}); 

dummy.socket.addListener('data', function(data) { 
    // received data 
    console.log(data); 
}); 

dummy.socket.addListener('error', function(error) { 
    if (!dummy.connected) { 
    // socket was not connected, notify callback 
    connected(null); 
    } 
    console.log("FAIL"); 
    console.log(error); 
}); 

dummy.socket.addListener('close', function() { 
// do something 
}); 

답변

3

확인 소스 파고의 조금 후에는 'TLS'를 포함하도록 NODE_DEBUG 환경 변수를 설정하여 몇 가지 추가 정보를 얻을 수 있습니다 보인다. 제 경우에는별로 도움이되지 않았지만 다른 사람에게 도움이 될 수 있습니다.

관련 문제