我正在开发一个使用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
如果您正在使用集群工厂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; }