/**
* Created by mark on 26/06/15.
*/
import com.datastax.driver.core.*;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.SecureRandom;
public class TestSSL {
public static void main(String[] args) throws Exception
{
SSLContext context = getSSLContext("/Users/mark/deploy/datastax.truststore",
"datastax",
"/Users/mark/deploy/datastax.keystore",
"datastax"); // truststore first, keystore second
Session session = null;
// Default cipher suites supported by C*
String[] cipherSuites = { "TLS_RSA_WITH_AES_128_CBC_SHA",
"TLS_RSA_WITH_AES_256_CBC_SHA" };
Cluster cluster = Cluster.builder()
.addContactPoints("54.183.130.240")
.withSSL(new SSLOptions(context, cipherSuites))
//.withCredentials("cassandra", "cassandra") // comment out for no auth
.build();
try {
System.out.println("connecting...");
session = cluster.connect();
System.out.println(session.getState().toString());
ResultSet myResults;
myResults = session.execute("select * from system.peers");
for (Row myRow : myResults) {
System.out.println(myRow.toString());
}
/**
myResults = session.execute("select * from markc.testme");
for (Row myRow : myResults) {
System.out.println(myRow.toString());
}**/
}
catch (Exception e){
e.printStackTrace();
}
session.close();
cluster.close();
}
private static SSLContext getSSLContext(String truststorePath,
String truststorePassword,
String keystorePath,
String keystorePassword)
throws Exception
{
FileInputStream tsf = new FileInputStream(truststorePath);
FileInputStream ksf = new FileInputStream(keystorePath);
SSLContext ctx = SSLContext.getInstance("SSL");
KeyStore ts = KeyStore.getInstance("JKS");
ts.load(tsf, truststorePassword.toCharArray());
TrustManagerFactory tmf =
TrustManagerFactory.getInstance(
TrustManagerFactory.getDefaultAlgorithm());
tmf.init(ts);
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(ksf, keystorePassword.toCharArray());
KeyManagerFactory kmf =
KeyManagerFactory.getInstance(
KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, keystorePassword.toCharArray());
ctx.init(kmf.getKeyManagers(), tmf.getTrustManagers(), new SecureRandom());
return ctx;
}
}