17
17
package com .mongodb .client .internal ;
18
18
19
19
import com .mongodb .ServerAddress ;
20
+ import com .mongodb .internal .connection .SslHelper ;
20
21
21
22
import javax .net .ssl .SSLContext ;
23
+ import javax .net .ssl .SSLParameters ;
24
+ import javax .net .ssl .SSLSocket ;
22
25
import java .io .IOException ;
23
26
import java .io .InputStream ;
24
27
import java .io .OutputStream ;
@@ -38,9 +41,10 @@ class KeyManagementService {
38
41
39
42
public InputStream stream (final String host , final ByteBuffer message ) throws IOException {
40
43
ServerAddress serverAddress = host .contains (":" ) ? new ServerAddress (host ) : new ServerAddress (host , defaultPort );
41
- Socket socket = sslContext .getSocketFactory ().createSocket ();
44
+ SSLSocket socket = ( SSLSocket ) sslContext .getSocketFactory ().createSocket ();
42
45
43
46
try {
47
+ enableHostNameVerification (socket );
44
48
socket .setSoTimeout (timeoutMillis );
45
49
socket .connect (serverAddress .getSocketAddress (), timeoutMillis );
46
50
} catch (IOException e ) {
@@ -68,6 +72,15 @@ public InputStream stream(final String host, final ByteBuffer message) throws IO
68
72
}
69
73
}
70
74
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
+
71
84
public int getDefaultPort () {
72
85
return defaultPort ;
73
86
}
0 commit comments