Skip to content

Commit 354e9be

Browse files
Java: implement support for using insecure TLS
Signed-off-by: Matt <[email protected]>
1 parent 1c76ac1 commit 354e9be

File tree

3 files changed

+52
-3
lines changed

3 files changed

+52
-3
lines changed

java/client/src/main/java/glide/api/models/configuration/BaseClientConfiguration.java

+13
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,19 @@ public abstract class BaseClientConfiguration {
3636
*/
3737
@Builder.Default private final boolean useTLS = false;
3838

39+
/**
40+
* True if communication with the cluster should check certificate validity.
41+
*
42+
* <p>If the server/cluster's certificate does not validate, not setting this will cause the connection
43+
* attempt to fail.
44+
*
45+
* <p>If the server/cluster's certificate does not validate, setting this will cause the connection
46+
* to ignore the certificate's validity and succeed.
47+
*
48+
* This is useful for when CNAMEs are used to point to a server/cluster.
49+
*/
50+
@Builder.Default private final boolean useInsecureTLS = false;
51+
3952
/** Represents the client's read from strategy. */
4053
@NonNull @Builder.Default private final ReadFrom readFrom = ReadFrom.PRIMARY;
4154

java/client/src/main/java/glide/managers/ConnectionManager.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,15 @@ private ConnectionRequest.Builder setupConnectionRequestBuilderBaseConfiguration
9999
.build());
100100
}
101101

102-
connectionRequestBuilder
103-
.setTlsMode(configuration.isUseTLS() ? TlsMode.SecureTls : TlsMode.NoTls)
104-
.setReadFrom(mapReadFromEnum(configuration.getReadFrom()));
102+
if (configuration.isUseTLS()) {
103+
connectionRequestBuilder
104+
.setTlsMode(configuration.isUseInsecureTLS() ? TlsMode.InsecureTls : TlsMode.SecureTls)
105+
.setReadFrom(mapReadFromEnum(configuration.getReadFrom()));
106+
} else {
107+
connectionRequestBuilder
108+
.setTlsMode(TlsMode.NoTls)
109+
.setReadFrom(mapReadFromEnum(configuration.getReadFrom()));
110+
}
105111

106112
if (configuration.getCredentials() != null) {
107113
AuthenticationInfo.Builder authenticationInfoBuilder = AuthenticationInfo.newBuilder();

java/client/src/test/java/glide/managers/ConnectionManagerTest.java

+30
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ public void connection_request_protobuf_generation_with_all_fields_set() {
136136
.address(NodeAddress.builder().host(HOST).port(PORT).build())
137137
.address(NodeAddress.builder().host(DEFAULT_HOST).port(DEFAULT_PORT).build())
138138
.useTLS(true)
139+
.useInsecureTLS(false)
139140
.readFrom(ReadFrom.PREFER_REPLICA)
140141
.credentials(ServerCredentials.builder().username(USERNAME).password(PASSWORD).build())
141142
.requestTimeout(REQUEST_TIMEOUT)
@@ -348,6 +349,35 @@ private void testAzAffinityWithoutClientAzThrowsConfigurationError(ReadFrom read
348349
assertThrows(ConfigurationError.class, () -> connectionManager.connectToValkey(config));
349350
}
350351

352+
@SneakyThrows
353+
@Test
354+
public void connection_request_protobuf_generation_use_insecure_tls() {
355+
// setup
356+
GlideClusterClientConfiguration glideClusterClientConfiguration =
357+
GlideClusterClientConfiguration.builder()
358+
.useTLS(true)
359+
.useInsecureTLS(true)
360+
.build();
361+
ConnectionRequest expectedProtobufConnectionRequest =
362+
ConnectionRequest.newBuilder()
363+
.setTlsMode(TlsMode.InsecureTls)
364+
.setClusterModeEnabled(true)
365+
.setReadFrom(ConnectionRequestOuterClass.ReadFrom.Primary)
366+
.build();
367+
CompletableFuture<Response> completedFuture = new CompletableFuture<>();
368+
Response response = Response.newBuilder().setConstantResponse(ConstantResponse.OK).build();
369+
completedFuture.complete(response);
370+
371+
// execute
372+
when(channel.connect(eq(expectedProtobufConnectionRequest))).thenReturn(completedFuture);
373+
CompletableFuture<Void> result =
374+
connectionManager.connectToValkey(glideClusterClientConfiguration);
375+
376+
// verify
377+
assertNull(result.get());
378+
verify(channel).connect(eq(expectedProtobufConnectionRequest));
379+
}
380+
351381
private ConnectionRequestOuterClass.ReadFrom mapReadFrom(ReadFrom readFrom) {
352382
switch (readFrom) {
353383
case AZ_AFFINITY:

0 commit comments

Comments
 (0)