1

我正在使用 datastax cassandra 3.6.0 版并尝试使用 ssl 连接到 cassandra。我有一个 ca 证书已经存储在 dir 中"/etc/ssl/certs/cassandra.crt"

我在 JAVA 中创建了一个 cassandra 集群:

cluster = Cluster.builder().addContactPoints(hostArray).withPort(Integer.parseInt(port)).withCredentials(username, password).build();
 

我确实withSSL(SSLOptions)在构建器中看到了一个 with,如何使用上述证书文件在 java 中创建 SSLOPtions,以便我可以使用它来创建集群?

在 Python 中我有

        ssl_opts = {"ca_certs": "/etc/ssl/certs/cassandra.crt"}
        auth_provider = PlainTextAuthProvider( username , password )
        cluster = Cluster(
            cluster_ips,
            auth_provider=auth_provider,
            port=20102,
            ssl_options=ssl_opts,
            load_balancing_policy=DCAwareRoundRobinPolicy()
        )

如何对 crt 文件执行相同操作以在 java 中创建集群?

4

2 回答 2

0

RemoteEndpointAwareSSLOptions在 Java 驱动程序 v3.6 中,您可以使用使用 JSSE 系统属性(由 指定)的类来配置 SSL -Djavax.net.ssl.*

如果您需要的超出系统属性允许的范围,请使用RemoteEndpointAwareJdkSSLOptions该类以编程方式配置 SSL。

有关详细信息,请参阅Java 驱动程序 3.6 SSL页面。

附带说明一下,驱动程序的 v3.6 于 2018 年 8 月发布,所以它非常旧。如果您正在开发新应用,我们建议您使用最新版本的驱动程序。如果您在使用旧版本时遇到问题,则无论如何都需要升级才能获得修复。干杯!

于 2020-10-29T06:27:00.607 回答
0

您需要先创建 SSLContext。要创建 SSLContext,您可以在此处参考示例SSLContext Example。一旦你有 SSLConext 对象,你可以得到 SSLOptions 如下

 JdkSSLOptions sslOptions = JdkSSLOptions.builder().withSSLContext(context).withCipherSuites(theCipherSuites).build();

然后你可以在 withSSL 方法中传递这个 sslOptions 作为

cluster = Cluster.builder().addContactPoints(hostArray).withPort(Integer.parseInt(port)).withCredentials(username, password).withSSL(sslOptions).build();

 
于 2020-10-28T05:34:23.227 回答