Как подключить Cassandra через ssl, используя свойства подключения (свойства url) - PullRequest
1 голос
/ 12 марта 2019

У меня есть файлы склада доверенных сертификатов и хранилища ключей и вся информация, относящаяся к учетной записи cassandra. У приложения, которое я использую для подключения к cassandra, есть ограничение, поскольку оно не дает мне возможности указать файлы склада доверенных сертификатов и хранилища ключей, поэтому я искал, могу ли я подключиться к cassandra через ssl, используя свойства URL-адреса соединения (свойства url) )

Ценю вашу помощь !!

1 Ответ

0 голосов
/ 06 апреля 2019

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;

Проверьте их сайт и посмотрите, сможете ли вы дополнить его в соответствии со своими потребностями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...