--- lib/_tls_wrap.js 2014-01-18 00:34:08.797862043 +0100 +++ lib/_tls_wrap.js 2014-01-18 00:34:30.489811735 +0100 @@ -691,7 +691,9 @@ var cb = args[1]; var defaults = { - rejectUnauthorized: '0' !== process.env.NODE_TLS_REJECT_UNAUTHORIZED + rejectUnauthorized: '0' !== process.env.NODE_TLS_REJECT_UNAUTHORIZED, + requestCert: true, + isServer: false }; options = util._extend(defaults, options || {}); @@ -699,7 +701,7 @@ options.host || options.socket && options.socket._host, NPN = {}, - credentials = crypto.createCredentials(options); + credentials = options.credentials || crypto.createCredentials(options); tls.convertNPNProtocols(options.NPNProtocols, NPN); // Wrapping TLS socket inside another TLS socket was requested - @@ -716,8 +718,8 @@ legacy = false; socket = new TLSSocket(options.socket, { credentials: credentials, - isServer: false, - requestCert: true, + isServer: options.isServer, + requestCert: options.requestCert, rejectUnauthorized: options.rejectUnauthorized, NPNProtocols: NPN.NPNProtocols }); @@ -771,7 +773,8 @@ if (options.servername) socket.setServername(options.servername); - socket._start(); + if (!options.isServer) + socket._start(); } socket.on('secure', function() { var verifyError = socket.ssl.verifyError();