Springboot Cassandra - 带 SSL 的 CqlSessionFactoryBean

Springboot Cassandra - CqlSessionFactoryBean with SSL

关于如何连接到启用了 SSL 的 Cassandra 集群的小问题。

目前,我正在连接到 Cassandra 集群,该集群 未通过执行以下操作启用 SSL,并且运行良好。

@Configuration
public class BaseCassandraConfiguration extends AbstractReactiveCassandraConfiguration {

    @Value("${spring.data.cassandra.username}")
    private String username;
    @Value("${spring.data.cassandra.password}")
    private String passPhrase;
    @Value("${spring.data.cassandra.keyspace-name}")
    private String keyspace;
    @Value("${spring.data.cassandra.local-datacenter}")
    private String datacenter;
    @Value("${spring.data.cassandra.contact-points}")
    private String contactPoints;
    @Value("${spring.data.cassandra.port}")
    private int    port;
    
    @Bean
    @NonNull
    @Override
    public CqlSessionFactoryBean cassandraSession() {
        final CqlSessionFactoryBean cqlSessionFactoryBean = new CqlSessionFactoryBean();
        cqlSessionFactoryBean.setContactPoints(contactPoints);
        cqlSessionFactoryBean.setKeyspaceName(keyspace);
        cqlSessionFactoryBean.setLocalDatacenter(datacenter);
        cqlSessionFactoryBean.setPort(port);
        cqlSessionFactoryBean.setUsername(username);
        cqlSessionFactoryBean.setPassword(passPhrase);
        return cqlSessionFactoryBean;
    }

我有另一个启用了 SSL 的 Cassandra 集群。

我期待看到 cqlSessionFactoryBean.setSSLEnabled(true) 之类的东西。不幸的是,似乎没有这样的。

请问设置此 bean 以便使用 SSL 连接到 Cassandra 的正确方法是什么?

谢谢。

CqlSessionFactoryBean 没有用于 SSL 连接的方法,因此您可能必须更改它并改用 CqlSession

SSLContext sslContext = ...
CqlSession session = CqlSession.builder()
    .withSslContext(sslContext)
    .build();

SslEngineFactory yourFactory = ...
CqlSession session = CqlSession.builder()
    .withSslEngineFactory(yourFactory)
    .build();