Details
-
Improvement
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
Unknown
Description
Implement Server Name Indication (SNI) support for the netty4-http client.
(Has been solved for HttpClient for many years https://issues.apache.org/jira/browse/HTTPCLIENT-1119)
This could be implemented in the HttpClientInitializerFactory.configureClientSSLOnDemand like this:
private SslHandler configureClientSSLOnDemand() throws Exception { if (!producer.getConfiguration().isSsl()) { return null; } if (producer.getConfiguration().getSslHandler() != null) { return producer.getConfiguration().getSslHandler(); } else if (sslContext != null) { URI uri = new URI(nettyProducer.getEndpoint().getEndpointUri()); SSLEngine sllEngine = sslContext.createSSLEngine(uri.getHost(), uri.getPort()); sllEngine.setUseClientMode(true); SSLParameters sslParameters = sllEngine.getSSLParameters(); sslParameters.setServerNames(Arrays.asList(new SNIHostName(uri.getHost()))); sllEngine.setSSLParameters(sslParameters); if (producer.getConfiguration().getSslContextParameters() == null) { // just set the enabledProtocols if the SslContextParameter doesn't set engine.setEnabledProtocols(producer.getConfiguration().getEnabledProtocols().split(",")); } return new SslHandler(engine); } return null; }