@@ -342,13 +342,19 @@ class Connection extends EventEmitter {
342342 minVersion : this . config . ssl . minVersion
343343 } ) ;
344344 const rejectUnauthorized = this . config . ssl . rejectUnauthorized ;
345+ const verifyIdentity = this . config . ssl . verifyIdentity ;
346+ const host = this . config . host ;
347+
345348 let secureEstablished = false ;
346349 const secureSocket = new Tls . TLSSocket ( this . stream , {
347350 rejectUnauthorized : rejectUnauthorized ,
348351 requestCert : true ,
349352 secureContext : secureContext ,
350353 isServer : false
351354 } ) ;
355+ if ( typeof host === 'string' ) {
356+ secureSocket . setServername ( host ) ;
357+ }
352358 // error handler for secure socket
353359 secureSocket . on ( '_tlsError' , err => {
354360 if ( secureEstablished ) {
@@ -359,7 +365,15 @@ class Connection extends EventEmitter {
359365 } ) ;
360366 secureSocket . on ( 'secure' , ( ) => {
361367 secureEstablished = true ;
362- onSecure ( rejectUnauthorized ? secureSocket . ssl . verifyError ( ) : null ) ;
368+ let callbackValue = null ;
369+ if ( rejectUnauthorized ) {
370+ callbackValue = secureSocket . ssl . verifyError ( )
371+ if ( ! callbackValue && typeof host === 'string' && verifyIdentity ) {
372+ const cert = secureSocket . ssl . getPeerCertificate ( true ) ;
373+ callbackValue = Tls . checkServerIdentity ( host , cert )
374+ }
375+ }
376+ onSecure ( callbackValue ) ;
363377 } ) ;
364378 secureSocket . on ( 'data' , data => {
365379 this . packetParser . execute ( data ) ;
0 commit comments