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
});