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