Yes, Server uses the encryption client-node and server-server both and running fine with JDKSSL options but problem is with NettySSLOptions.
On Tue, Jun 19, 2018 at 7:04 PM, Jonathan Haddad <j...@jonhaddad.com> wrote: > Is the server configured to use encryption? > > On Tue, Jun 19, 2018 at 3:59 AM Jahar Tyagi <jaharty...@gmail.com> wrote: > >> Hi, >> >> I referred to this link https://docs.datastax. >> com/en/developer/java-driver/3.0/manual/ssl/ >> <https://docs.datastax.com/en/developer/java-driver/3.0/manual/ssl/> to >> implement a simple Cassandra client using datastax driver 3.0.0 on SSL with >> OpenSSL options but unable to run it. >> >> Getting generic exception as " >> *com.datastax.driver.core.exceptions.NoHostAvailableException" >> *at line >> mySession = myCluster.connect(); >> >> *Code snippet to setup cluster connection is below.* >> >> public void connectToCluster() >> { >> String[] theCassandraHosts = {"myip"}; >> myCluster = >> >> Cluster.builder().withSSL(getSSLOption()).withReconnectionPolicy(new >> ConstantReconnectionPolicy(2000)).addContactPoints( >> theCassandraHosts).withPort(10742) >> .withCredentials("username", "password"). >> withLoadBalancingPolicy(DCAwareRoundRobinPolicy.builder().build()) >> .withSocketOptions(new SocketOptions(). >> setConnectTimeoutMillis(800).setKeepAlive(true)).build(); >> try { >> mySession = myCluster.connect(); >> } >> catch(Exception e) { >> e.printStackTrace(); >> } >> System.out.println("Session Established"); >> } >> >> >> private SSLOptions getSSLOption() >> { >> InputStream trustStore = null; >> try >> { >> String theTrustStorePath = "/var/opt/SecureInterface/ >> myTrustStore.jks"; >> String theTrustStorePassword = "mypassword"; >> List<String> theCipherSuites = new ArrayList<String>(); >> theCipherSuites.add("TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"); >> KeyStore ks = KeyStore.getInstance("JKS"); >> * trustStore = new FileInputStream(theTrustStorePath);* >> ks.load(trustStore, theTrustStorePassword.toCharArray()); >> TrustManagerFactory tmf = TrustManagerFactory.getInstance( >> TrustManagerFactory.getDefaultAlgorithm()); >> tmf.init(ks); >> SslContextBuilder builder = >> SslContextBuilder.forClient() >> .sslProvider(SslProvider.OPENSSL) >> .trustManager(tmf) >> .ciphers(theCipherSuites) >> // only if you use client authentication >> .keyManager(new File("/var/opt/ >> SecureInterface/keystore/Cass.crt"), >> new File("/var/opt/vs/ >> SecureInterface/keystore/Cass_enc.key")); >> SSLOptions sslOptions = new NettySSLOptions(builder.build()); >> return sslOptions; >> } >> catch (Exception e) >> { >> e.printStackTrace(); >> } >> finally >> { >> try >> { >> trustStore.close(); >> } >> catch (IOException e) >> { >> e.printStackTrace(); >> } >> } >> return null; >> } >> >> Cassandra server is running fine with client and server encryption >> options. Moreover I am able to run my client using JdkSSLOptions but have >> problem with NettySSLOptions. >> >> Has anyone implemented the NettySSLOptions for Cassandra client >> application? >> >> >> Regards, >> Jahar Tyagi >> > -- > Jon Haddad > http://www.rustyrazorblade.com > twitter: rustyrazorblade >