1717package com .mongodb .client .internal ;
1818
1919import com .mongodb .ServerAddress ;
20+ import com .mongodb .internal .connection .SslHelper ;
2021
2122import javax .net .ssl .SSLContext ;
23+ import javax .net .ssl .SSLParameters ;
24+ import javax .net .ssl .SSLSocket ;
2225import java .io .IOException ;
2326import java .io .InputStream ;
2427import java .io .OutputStream ;
@@ -38,9 +41,10 @@ class KeyManagementService {
3841
3942 public InputStream stream (final String host , final ByteBuffer message ) throws IOException {
4043 ServerAddress serverAddress = host .contains (":" ) ? new ServerAddress (host ) : new ServerAddress (host , defaultPort );
41- Socket socket = sslContext .getSocketFactory ().createSocket ();
44+ SSLSocket socket = ( SSLSocket ) sslContext .getSocketFactory ().createSocket ();
4245
4346 try {
47+ enableHostNameVerification (socket );
4448 socket .setSoTimeout (timeoutMillis );
4549 socket .connect (serverAddress .getSocketAddress (), timeoutMillis );
4650 } catch (IOException e ) {
@@ -68,6 +72,15 @@ public InputStream stream(final String host, final ByteBuffer message) throws IO
6872 }
6973 }
7074
75+ private void enableHostNameVerification (final SSLSocket socket ) {
76+ SSLParameters sslParameters = socket .getSSLParameters ();
77+ if (sslParameters == null ) {
78+ sslParameters = new SSLParameters ();
79+ }
80+ SslHelper .enableHostNameVerification (sslParameters );
81+ socket .setSSLParameters (sslParameters );
82+ }
83+
7184 public int getDefaultPort () {
7285 return defaultPort ;
7386 }
0 commit comments