Instaclustr имеет на своем сайте сообщение, в котором описано, как подключиться к Spark к Cassandra через SSL: Instaclustr Spark с настройкой SSL Cassandra
На шаге 6 они предоставляют подробную информацию о создании класса фабрики соединений Cassandra, который имеет метод createSSLOptions
, который позволяет задавать конкретные детали:
SSLOptions createSSLOPtions (CassandraConnectorConf.CassandraSSLConf conf) throws KeyStoreException, IOException, CertificateException, NoSuchAlgorithmException, KeyManagementException {
if (conf.trustStorePath().isEmpty()) {
return null;
}
try (InputStream trustStore = this.getClass().getClassLoader().getResourceAsStream(conf.trustStorePath().get())) {
KeyStore keyStore = KeyStore.getInstance(conf.trustStoreType());
keyStore.load(trustStore, conf.trustStorePassword().isDefined() ? conf.trustStorePassword().get().toCharArray() : null);
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(keyStore);
SSLContext context = SSLContext.getInstance(conf.protocol());
context.init(null, tmf.getTrustManagers(), new SecureRandom());
ClassTag<String> tag = scala.reflect.ClassTag$.MODULE$.apply(String.class);
return JdkSSLOptions.builder()
.withSSLContext(context)
.withCipherSuites((String[]) conf.enabledAlgorithms().toArray(tag)).build();
}
}
Затем они вызывают этот метод, чтобы добавить последние штрихи к своему объекту построителя соединений:
if (conf.cassandraSSLConf().enabled()) {
SSLOptions options = createSSLOPtions(conf.cassandraSSLConf());
if (null != options) {
builder = builder.withSSL(options);
} else {
builder = builder.withSSL();
}
}
return builder;
Проверьте их сайт и посмотрите, сможете ли вы дополнить его в соответствии со своими потребностями.