用datastax cassandra java驱动程序通过ssl连接cassandra

ftf50wuq  于 2021-06-09  发布在  Cassandra
关注(0)|答案(2)|浏览(392)

我正在使用datastax cassandra版本3.6.0,并尝试使用ssl连接到cassandra。我已经在dir中存储了ca证书 "/etc/ssl/certs/cassandra.crt" .
我在java中创建了一个cassandra集群:

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

我确实看到一个 withSSL(SSLOptions) 在构建器中,如何使用上面的cert文件在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中创建集群?

mgdq6dx1

mgdq6dx11#

您需要先创建sslcontext。要创建sslcontext,可以参考这里的示例sslcontext example。一旦你有了sslconext对象,你可以得到如下的ssloptions

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

然后您可以将此选项作为

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

tkqqtvp12#

在JavaDriverV3.6中,可以使用 RemoteEndpointAwareSSLOptions 类,该类使用jsse系统属性(由 -Djavax.net.ssl.* ).
如果您需要的超出系统属性允许的范围,请使用 RemoteEndpointAwareJdkSSLOptions 班级。
有关详细信息,请参阅JavaDriver3.6SSL页面。
另一方面,该驱动程序的v3.6版本是在2018年8月发布的,因此非常旧。如果您正在开发新的应用程序,我们建议您使用最新版本的驱动程序。如果遇到旧版本的问题,无论如何都需要升级才能得到修复。干杯!

相关问题