gpt4 book ai didi

spring-boot - 如何将JedisConnectionFactory配置为使用SSL,以免出现错误: “JedisDataException: ERR unencrypted connection is prohibited”?

转载 作者:行者123 更新时间:2023-12-03 06:46:34 29 4
gpt4 key购买 nike

我有一个带有RLEC(RedisLabs企业集群)UI的Redis数据库,该UI已设置用于SSL连接。

我有一个Java应用程序,能够使用Jedis连接到Redis数据库。

这有效:

Jedis jedis = new Jedis(redisInfo.getHost(), redisInfo.getPort(), useSsl);

// make the connection
jedis.connect();

// authorize with our password
jedis.auth(redisInfo.getPassword());

环境变量:
"-Djavax.net.ssl.keyStoreType=PKCS12 -Djavax.net.ssl.keyStorePassword=iloveredis -Djavax.net.ssl.keyStore=$PWD/META-INF/clientKeyStore.p12 -Djavax.net.ssl.trustStoreType=JKS -Djavax.net.ssl.trustStorePassword=iloveredis -Djavax.net.ssl.trustStore=$PWD/META-INF/clientTrustStore.jks"

我也有一个Spring Boot应用程序,我试图在其中使用JedisConnectionFactory连接到Redis数据库,但我不能。 (使用同一应用程序,我可以连接到未启用SSL的Redis数据库)。

在我的pom.xml中:
          <dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>

在我的redis配置文件中:
@Configuration
@EnableRedisRepositories
public class RedisConfig {

@Bean
JedisConnectionFactory jedisConnectionFactory() {
RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration();
redisConfig.setHostName(redisInfo.getHost());
redisConfig.setPort(redisInfo.getPort());
redisConfig.setPassword(RedisPassword.of(redisInfo.getPassword()));
boolean useSsl = env.getProperty("spring.redis.ssl", Boolean.class);
JedisClientConfiguration jedisConfig;
if (useSsl) {
jedisConfig = JedisClientConfiguration
.builder()
.useSsl()
.build();
} else {
jedisConfig = JedisClientConfiguration
.builder()
.build();
}
JedisConnectionFactory jcf = new JedisConnectionFactory(redisConfig, jedisConfig);

return jcf;
}



@Bean
public RedisTemplate<?, ?> redisTemplateJedis() {
final RedisTemplate<byte[], byte[]> template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
template.setValueSerializer(new Jackson2JsonRedisSerializer<Object>(Object.class));
return template;
}

这是我得到的错误:
org.springframework.data.redis.RedisConnectionFailureException: Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisDataException: ERR unencrypted connection is prohibited

另一点是,出于测试目的,服务器和应用程序都使用自签名证书(与Jedis配合使用)。

我不知道如何配置JedisConfigurationFactory,以免出现此错误。

最佳答案

我必须在usePooling中打开JedisClientConfiguration

关于spring-boot - 如何将JedisConnectionFactory配置为使用SSL,以免出现错误: “JedisDataException: ERR unencrypted connection is prohibited”?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55009471/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com