SNI support can be enabled when running on Oracle JRE 7 by using a custom SSL socket factory. Please note this code snippet makes use of Commons BeanUtils to invoke Oracle private method via reflection.

HttpClient 4.3

SSLContext sslcontext = SSLContexts.createSystemDefault();
SSLSocketFactory sslsf = new SSLSocketFactory(sslcontext) {

    public Socket connectSocket(
        int connectTimeout, 
        Socket socket,
        HttpHost host, 
        InetSocketAddress remoteAddress,
        InetSocketAddress localAddress, 
        HttpContext context) throws IOException, ConnectTimeoutException {
        if (socket instanceof SSLSocket) {
            try {
                 PropertyUtils.setProperty(socket, "host", host.getHostName());
            } catch (NoSuchMethodException ex) {
            } catch (IllegalAccessException ex) {
            } catch (InvocationTargetException ex) {
        return super.connectSocket(connectTimeout, socket, host, remoteAddress,
            localAddress, context);


CloseableHttpClient httpclient = HttpClients.custom()
CloseableHttpResponse response = httpclient.execute(new HttpGet(""));
try {
} finally {