From d3c8ebac78347ee3bd21f3734cd05ae9acf5762a Mon Sep 17 00:00:00 2001 From: Justin Merz Date: Wed, 8 May 2019 10:26:47 -0700 Subject: [PATCH 1/2] skip TLS SNI if host is IP address (do not set servername option in tls.connect) --- lib/connection.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/connection.js b/lib/connection.js index 1f0af2f11..54addcb2b 100644 --- a/lib/connection.js +++ b/lib/connection.js @@ -91,9 +91,8 @@ Connection.prototype.connect = function (port, host) { return self.emit('error', new Error('There was an error establishing an SSL connection')) } var tls = require('tls') - self.stream = tls.connect({ + let options = { socket: self.stream, - servername: host, checkServerIdentity: self.ssl.checkServerIdentity || tls.checkServerIdentity, rejectUnauthorized: self.ssl.rejectUnauthorized, ca: self.ssl.ca, @@ -103,7 +102,12 @@ Connection.prototype.connect = function (port, host) { cert: self.ssl.cert, secureOptions: self.ssl.secureOptions, NPNProtocols: self.ssl.NPNProtocols - }) + }; + if( net.isIP(host) === 0 ) { + options.servername = host; + } + + self.stream = tls.connect(options); self.attachListeners(self.stream) self.stream.on('error', reportStreamError) From 376120775a7185c3c064a2f9759a1e41f73bcc93 Mon Sep 17 00:00:00 2001 From: Charmander <~@charmander.me> Date: Sun, 7 Jul 2019 19:33:30 +0000 Subject: [PATCH 2/2] Format code --- lib/connection.js | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/connection.js b/lib/connection.js index 54addcb2b..052ff351b 100644 --- a/lib/connection.js +++ b/lib/connection.js @@ -91,7 +91,7 @@ Connection.prototype.connect = function (port, host) { return self.emit('error', new Error('There was an error establishing an SSL connection')) } var tls = require('tls') - let options = { + const options = { socket: self.stream, checkServerIdentity: self.ssl.checkServerIdentity || tls.checkServerIdentity, rejectUnauthorized: self.ssl.rejectUnauthorized, @@ -102,12 +102,11 @@ Connection.prototype.connect = function (port, host) { cert: self.ssl.cert, secureOptions: self.ssl.secureOptions, NPNProtocols: self.ssl.NPNProtocols - }; - if( net.isIP(host) === 0 ) { - options.servername = host; } - - self.stream = tls.connect(options); + if (net.isIP(host) === 0) { + options.servername = host + } + self.stream = tls.connect(options) self.attachListeners(self.stream) self.stream.on('error', reportStreamError)