Node.js TLS client example
February 21, 2011 2 Comments
Couldn’t find good end to end example of Node.js new raw SSL client API, so here is one. This snippet just connects to the https://encrypted.google.com and fetches the front page.
tls = require('tls');
// callback for when secure connection established
function connected(stream) {
if (stream) {
// socket connected
stream.write("GET / HTTP/1.0\n\rHost: encrypted.google.com:443\n\r\n\r");
} 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(443, 'encrypted.google.com', function() {
// callback called only after successful socket connection
dummy.connected = true;
if (dummy.socket.authorized) {
// authorization successful
dummy.socket.setEncoding('utf-8');
connected(dummy.socket);
} else {
// authorization failed
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
});
If you want to use client certificate authentication, define the options and give that as additional parameter to the tls.connect call.
var keyPem = fs.readFileSync("key-noenc.pem", encoding='ascii');
var certPem = fs.readFileSync("cert.pem", encoding='ascii');
var options = {key:keyPem, cert:certPem };
...
dummy.socket = tls.connect(443, 'some.example.com', options, function() {
....
Sweeet, keep working
Pingback: Polling Apple Push Notification feedback service with Node.js « Brave New Method