public SSLEngine createClientEngine(@NonNull final String host, int port) throws ExecutionException {
        SSLContext ctx = CLIENT_SSL_CONTEXTS.get(host, new Callable<SSLContext>() {
            @Override
            public SSLContext call() throws GeneralSecurityException, IOException,
                    OperatorCreationException {
                return createClientContext(host);
            }
        });
        SSLEngine engine = ctx.createSSLEngine(host, port);
        List<String> ciphers = new LinkedList<>();
        for (String each : engine.getEnabledCipherSuites()) {
            if (!each.equals("TLS_DHE_RSA_WITH_AES_128_CBC_SHA") &&
                    !each.equals("TLS_DHE_RSA_WITH_AES_256_CBC_SHA")) {
                ciphers.add(each);
            }
        }
        engine.setEnabledCipherSuites(ciphers.toArray(new String[0]));
        engine.setUseClientMode(true);
        engine.setNeedClientAuth(false);
        return engine;
    }
Create a client {@link SSLEngine} with the remote server IP and port.

@param host Remote server host.
@param port Remote server port.
@return A client {@link SSLEngine} instance.
@throws ExecutionException If an execution error has occurred.
netbare-core/src/main/java/com/github/megatronking/netbare/ssl/SSLEngineFactory.java