微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过ssl通过datastax将cassandra连接到cassandra JAVA驱动程序

如何解决通过ssl通过datastax将cassandra连接到cassandra JAVA驱动程序

我正在使用datastax cassandra版本3.6.0,并尝试使用ssl连接到cassandra。 我已经在目录"/etc/ssl/certs/cassandra.crt"中存储了一个CA证书。

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

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

我确实在构建器中看到带有withSSL(SSLOptions)的, 如何使用上述证书文件在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中创建集群?

解决方法

您需要首先创建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();

 
,

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

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

有关详细信息,请参见Java driver 3.6 SSL页。

附带说明,该驱动程序的v3.6版本已于2018年8月发布,因此它非常旧。如果要开发新的应用程序,我们建议您使用最新版本的驱动程序。如果您遇到较旧版本的问题,则无论如何都需要进行升级以获取修补程序。干杯!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。