用于启用 SSL 的 Spring Boot Cassandra 配置
Posted
技术标签:
【中文标题】用于启用 SSL 的 Spring Boot Cassandra 配置【英文标题】:Spring boot Cassandra configuration for enabling SSL 【发布时间】:2021-04-07 21:05:45 【问题描述】:我正在开发一个使用 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
【问题讨论】:
【参考方案1】:如果您使用的是集群工厂 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;
【讨论】:
引起:com.datastax.driver.core.exceptions.NoHostAvailableException:所有主机尝试查询失败(尝试:xxx.xx.x.xxx/xxx.xx.x.xxx :9042 (com.datastax.driver.core.exceptions.TransportException: [ xxx.xx.x.xxx/xxx.xx.x.xxx::9042] Error writing)) --- 我一直收到这个错误以上是关于用于启用 SSL 的 Spring Boot Cassandra 配置的主要内容,如果未能解决你的问题,请参考以下文章
启用 ssl 和 Elastic Beanstalk 的 Spring Boot - 找不到文件
将 .crt 添加到 Spring Boot 以启用 SSL
如何配置 Spring Boot 应用程序以在 MySQL 上使用 SSL/TLS?