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

Reply via email to