2

我正在开发一个使用 Cassandra 的 Spring Boot 应用程序。我想在我的应用程序中启用 SSL,但似乎找不到如何配置 Cassandra 以使用 SSL。

@Configuration
 class CassandraApplicationConfiguration extends AbstractCassandraConfiguration {

        @Value("${spring.data.cassandra.contact-points:localhost}")
        private String contactPoints;

        @Value("${spring.data.cassandra.keyspace-name:my_keyspace}")
        private String keySpace;

        @Value("${spring.data.cassandra.port:9042}")
        private int port;

        @Value("${spring.data.cassandra.username:cassandra}")
        private String username;

        @Value("${spring.data.cassandra.password:cassandra}")
        private String password;

        @Value("${spring.data.cassandra.schema-action:NONE}")
        private String schemaAction;

       @Override
       protected AuthProvider getAuthProvider() {
           return new PlainTextAuthProvider(username, password);
       }
}

此外,我正在使用带有以下依赖项的默认驱动程序。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-cassandra</artifactId>
    <version>2.2.0.RELEASE</version>
</dependency>

只需以下标志即可传递信任库和密码

-Djavax.net.ssl.trustStore=~/keys/internal-truststore
-Djavax.net.ssl.trustStorePassword=password
4

1 回答 1

0

如果您使用的是集群工厂 bean

@Bean 
@Override public CassandraClusterFactoryBean cluster() {
    CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean(); 
    PlainTextAuthProvider sap = new PlainTextAuthProvider(env.getProperty("cassandra.username"), env.getProperty("cassandra.password"));
    cluster.setContactPoints(env.getProperty("cassandra.contactpoints"));
    cluster.setPort(Integer.parseInt(env.getProperty("cassandra.port")));
    cluster.setAuthProvider(sap);
    cluster.setSslEnabled(true);
    return cluster; }
于 2020-12-31T15:22:11.330 回答