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



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

我有一个用JAVA创建的cassandra集群:

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

我确实在生成器中看到了具有CCD_ 2的,我如何用上面的证书文件在java中创建SSLOPtions,以便使用它来创建集群?

在巨蟒我有

        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示例。一旦您有了SSLOnext对象,您就可以获得如下所示的SSLOptions

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

然后您可以使用SSL方法将此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驱动程序3.6 SSL页面。

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

相关内容

  • 没有找到相关文章

最新更新