如何在 spring-boot-data-redis 中使用生菜通过 ssl 连接到哨兵?

问题描述

我正在尝试使用 spring-boot-data-redis:2.2.4.RELEASE 连接到哨兵。

关于sentinel的配置例子很多,但是ssl就没有了。 如果我现在不使用 ssl 配置,我可以连接到 sentinel。

这是我的生菜配置代码

@Bean
public LettuceConnectionFactory redisConnectionFactory(
    RedisConfiguration redisConfiguration,@Value("${services.redis.tls:true}") boolean useTls,@Value("${services.redis.tls-path}") String certFilePath) {
    
    //some timeout configurations here
    //...

    ClientOptions.Builder clientOptionsBuilder =
        ClientOptions.builder().timeoutoptions(timeoutoptions);

    if (redisConfiguration instanceof RedisSentinelConfiguration) {
        SslOptions sslOptions = SslOptions.builder().truststore(new File(certFilePath)).build();
        clientOptionsBuilder = clientOptionsBuilder.sslOptions(sslOptions);
    }

    LettuceClientConfiguration.LettuceClientConfigurationBuilder configurationBuilder =
        LettuceClientConfiguration.builder();

    if (useTls) {
        configurationBuilder = configurationBuilder.useSsl().and();
    }

    LettuceClientConfiguration clientConfiguration =
        configurationBuilder.clientOptions(clientOptionsBuilder.build()).build();

    return new LettuceConnectionFactory(redisConfiguration,clientConfiguration);
}

如果我使用此配置,则会发生 SSLHandshakeException(等 handshake_failure)。

需要什么版本吗?我将 .jks 用于 certFilePath

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)