如何使用连接属性(url属性)通过ssl连接cassandra

pkbketx9  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(474)

我有信任库和密钥库文件以及与cassandra帐户相关的所有信息。我用来连接到cassandra的应用程序有一个限制,因为它没有为我提供指定信任库和密钥库文件的选项,因此我正在查看是否可以使用连接url属性(url properties)通过ssl连接到cassandra
感谢你的帮助!!

cgvd09ve

cgvd09ve1#

instaclustr在他们的网站上有一篇文章,描述了如何通过ssl将spark连接到cassandra: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;

看看他们的网站,看看你是否可以扩充它来满足你的需要。

相关问题