diff --git a/redisson/src/main/java/org/redisson/client/RedisClientConfig.java b/redisson/src/main/java/org/redisson/client/RedisClientConfig.java index a664319c0..ac73870fb 100644 --- a/redisson/src/main/java/org/redisson/client/RedisClientConfig.java +++ b/redisson/src/main/java/org/redisson/client/RedisClientConfig.java @@ -63,8 +63,9 @@ public class RedisClientConfig { private String sslTruststorePassword; private URL sslKeystore; private String sslKeystorePassword; + private String[] sslProtocols; private NettyHook nettyHook = new DefaultNettyHook(); - + public RedisClientConfig() { } @@ -313,4 +314,11 @@ public class RedisClientConfig { return this; } + public String[] getSslProtocols() { + return sslProtocols; + } + public RedisClientConfig setSslProtocols(String[] sslProtocols) { + this.sslProtocols = sslProtocols; + return this; + } } diff --git a/redisson/src/main/java/org/redisson/client/handler/RedisChannelInitializer.java b/redisson/src/main/java/org/redisson/client/handler/RedisChannelInitializer.java index 3bde932dd..c4122e6e0 100644 --- a/redisson/src/main/java/org/redisson/client/handler/RedisChannelInitializer.java +++ b/redisson/src/main/java/org/redisson/client/handler/RedisChannelInitializer.java @@ -117,6 +117,7 @@ public class RedisChannelInitializer extends ChannelInitializer { } SslContextBuilder sslContextBuilder = SslContextBuilder.forClient().sslProvider(provided); + sslContextBuilder.protocols(config.getSslProtocols()); if (config.getSslTruststore() != null) { KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); diff --git a/redisson/src/main/java/org/redisson/config/BaseConfig.java b/redisson/src/main/java/org/redisson/config/BaseConfig.java index 14af2545a..601a1788b 100644 --- a/redisson/src/main/java/org/redisson/config/BaseConfig.java +++ b/redisson/src/main/java/org/redisson/config/BaseConfig.java @@ -86,6 +86,8 @@ public class BaseConfig> { private String sslKeystorePassword; + private String[] sslProtocols; + private int pingConnectionInterval = 30000; private boolean keepAlive; @@ -112,6 +114,7 @@ public class BaseConfig> { setSslTruststorePassword(config.getSslTruststorePassword()); setSslKeystore(config.getSslKeystore()); setSslKeystorePassword(config.getSslKeystorePassword()); + setSslProtocols(config.getSslProtocols()); setPingConnectionInterval(config.getPingConnectionInterval()); setKeepAlive(config.isKeepAlive()); setTcpNoDelay(config.isTcpNoDelay()); @@ -380,6 +383,24 @@ public class BaseConfig> { return (T) this; } + public String[] getSslProtocols() { + return sslProtocols; + } + + /** + * Defines SSL protocols. + * Example values: TLSv1.3, TLSv1.2, TLSv1.1, TLSv1 + *

+ * Default is null + * + * @param sslProtocols - protocols + * @return config + */ + public T setSslProtocols(String[] sslProtocols) { + this.sslProtocols = sslProtocols; + return (T) this; + } + public int getPingConnectionInterval() { return pingConnectionInterval; } diff --git a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java index c42ac72fc..5592805fe 100644 --- a/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/MasterSlaveConnectionManager.java @@ -371,6 +371,7 @@ public class MasterSlaveConnectionManager implements ConnectionManager { c.setSslTruststorePassword(cfg.getSslTruststorePassword()); c.setSslKeystore(cfg.getSslKeystore()); c.setSslKeystorePassword(cfg.getSslKeystorePassword()); + c.setSslProtocols(cfg.getSslProtocols()); c.setRetryInterval(cfg.getRetryInterval()); c.setRetryAttempts(cfg.getRetryAttempts()); @@ -441,6 +442,7 @@ public class MasterSlaveConnectionManager implements ConnectionManager { .setSslTruststorePassword(config.getSslTruststorePassword()) .setSslKeystore(config.getSslKeystore()) .setSslKeystorePassword(config.getSslKeystorePassword()) + .setSslProtocols(config.getSslProtocols()) .setClientName(config.getClientName()) .setKeepPubSubOrder(cfg.isKeepPubSubOrder()) .setPingConnectionInterval(config.getPingConnectionInterval()) diff --git a/redisson/src/main/java/org/redisson/connection/SingleConnectionManager.java b/redisson/src/main/java/org/redisson/connection/SingleConnectionManager.java index d415c15ab..9a7a3790e 100644 --- a/redisson/src/main/java/org/redisson/connection/SingleConnectionManager.java +++ b/redisson/src/main/java/org/redisson/connection/SingleConnectionManager.java @@ -40,6 +40,7 @@ public class SingleConnectionManager extends MasterSlaveConnectionManager { newconfig.setSslTruststorePassword(cfg.getSslTruststorePassword()); newconfig.setSslKeystore(cfg.getSslKeystore()); newconfig.setSslKeystorePassword(cfg.getSslKeystorePassword()); + newconfig.setSslProtocols(cfg.getSslProtocols()); newconfig.setRetryAttempts(cfg.getRetryAttempts()); newconfig.setRetryInterval(cfg.getRetryInterval());