我使用的是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月发布,所以它非常旧。如果您正在开发新的应用程序,我们建议您使用最新版本的驱动程序。如果您遇到旧版本的问题,您无论如何都需要升级才能得到修复。干杯