44import io .netty .handler .ssl .SslContext ;
55import io .netty .handler .ssl .SslHandler ;
66
7+ import javax .net .ssl .SSLEngine ;
8+ import javax .net .ssl .SSLParameters ;
9+ import java .net .InetSocketAddress ;
10+
711public class SslHandlerProvider {
812
913 private final SslContext sslContext ;
@@ -14,9 +18,20 @@ public SslHandlerProvider(SslContext context, int sslHandshakeTimeoutMillis){
1418 this .sslHandshakeTimeoutMillis = sslHandshakeTimeoutMillis ;
1519 }
1620
17- public SslHandler sslHandlerForChannel (final SocketChannel socket ) {
18- SslHandler handler = sslContext .newHandler (socket .alloc ());
19- handler .setHandshakeTimeoutMillis (sslHandshakeTimeoutMillis );
20- return handler ;
21+ public SslHandler sslHandlerForChannel (final SocketChannel socketChannel ) {
22+ final InetSocketAddress remoteAddress = socketChannel .remoteAddress ();
23+ final String peerHost = remoteAddress .getHostString ();
24+ final int peerPort = remoteAddress .getPort ();
25+ final SslHandler sslHandler = sslContext .newHandler (socketChannel .alloc (), peerHost , peerPort );
26+
27+ final SSLEngine engine = sslHandler .engine ();
28+ engine .setUseClientMode (false );
29+
30+ final SSLParameters sslParameters = engine .getSSLParameters ();
31+ sslParameters .setEndpointIdentificationAlgorithm ("HTTPS" );
32+ engine .setSSLParameters (sslParameters );
33+
34+ sslHandler .setHandshakeTimeoutMillis (sslHandshakeTimeoutMillis );
35+ return sslHandler ;
2136 }
2237}
0 commit comments