Skip to content

Commit 5f929ef

Browse files
committed
Fix Elasticsearch REST client's SSL configuration
See gh-46061
1 parent 61dfa7a commit 5f929ef

File tree

2 files changed

+11
-17
lines changed

2 files changed

+11
-17
lines changed

module/spring-boot-elasticsearch/src/main/java/org/springframework/boot/elasticsearch/autoconfigure/ElasticsearchRestClientConfigurations.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,11 @@
3434
import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder;
3535
import org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider;
3636
import org.apache.hc.client5.http.impl.nio.PoolingAsyncClientConnectionManagerBuilder;
37+
import org.apache.hc.client5.http.ssl.DefaultClientTlsStrategy;
38+
import org.apache.hc.client5.http.ssl.NoopHostnameVerifier;
3739
import org.apache.hc.core5.http.HttpHost;
38-
import org.apache.hc.core5.http.nio.ssl.BasicClientTlsStrategy;
3940
import org.apache.hc.core5.reactor.IOReactorConfig;
41+
import org.apache.hc.core5.reactor.ssl.SSLBufferMode;
4042
import org.apache.hc.core5.util.Timeout;
4143
import org.jspecify.annotations.Nullable;
4244

@@ -189,12 +191,11 @@ public void customize(PoolingAsyncClientConnectionManagerBuilder connectionManag
189191
SslBundle sslBundle = this.connectionDetails.getSslBundle();
190192
if (sslBundle != null) {
191193
SSLContext sslContext = sslBundle.createSslContext();
192-
connectionManagerBuilder
193-
.setTlsStrategy(new BasicClientTlsStrategy(sslContext, (endpoint, sslEngine) -> {
194-
SslOptions sslOptions = sslBundle.getOptions();
195-
sslEngine.setEnabledProtocols(sslOptions.getEnabledProtocols());
196-
sslEngine.setEnabledCipherSuites(sslOptions.getCiphers());
197-
}, null));
194+
SslOptions sslOptions = sslBundle.getOptions();
195+
DefaultClientTlsStrategy tlsStrategy = new DefaultClientTlsStrategy(sslContext,
196+
sslOptions.getEnabledProtocols(), sslOptions.getCiphers(), SSLBufferMode.STATIC,
197+
NoopHostnameVerifier.INSTANCE);
198+
connectionManagerBuilder.setTlsStrategy(tlsStrategy);
198199
}
199200
}
200201

module/spring-boot-elasticsearch/src/test/java/org/springframework/boot/elasticsearch/autoconfigure/ElasticsearchRestClientAutoConfigurationTests.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import java.util.ArrayList;
2121
import java.util.List;
2222

23-
import javax.net.ssl.SSLEngine;
24-
2523
import co.elastic.clients.transport.rest5_client.low_level.Node;
2624
import co.elastic.clients.transport.rest5_client.low_level.Rest5Client;
2725
import co.elastic.clients.transport.rest5_client.low_level.Rest5ClientBuilder;
@@ -37,7 +35,6 @@
3735
import org.apache.hc.core5.function.Resolver;
3836
import org.apache.hc.core5.http.HttpHost;
3937
import org.apache.hc.core5.http.config.Registry;
40-
import org.apache.hc.core5.reactor.ssl.SSLSessionInitializer;
4138
import org.apache.hc.core5.util.Timeout;
4239
import org.assertj.core.api.InstanceOfAssertFactories;
4340
import org.junit.jupiter.api.Test;
@@ -310,13 +307,9 @@ void configureWithSslBundle() {
310307
assertThat(restClient).extracting("client.manager.connectionOperator.tlsStrategyLookup")
311308
.asInstanceOf(InstanceOfAssertFactories.type(Registry.class))
312309
.extracting((registry) -> registry.lookup("https"))
313-
.extracting("initializer")
314-
.asInstanceOf(InstanceOfAssertFactories.type(SSLSessionInitializer.class))
315-
.satisfies((sslInitializer) -> {
316-
SSLEngine engine = mock(SSLEngine.class);
317-
sslInitializer.initialize(null, engine);
318-
then(engine).should().setEnabledCipherSuites(new String[] { "DESede" });
319-
then(engine).should().setEnabledProtocols(new String[] { "TLSv1.3" });
310+
.satisfies((tlsStrategy) -> {
311+
assertThat(tlsStrategy).extracting("supportedProtocols").isEqualTo(new String[] { "TLSv1.3" });
312+
assertThat(tlsStrategy).extracting("supportedCipherSuites").isEqualTo(new String[] { "DESede" });
320313
});
321314
});
322315
}

0 commit comments

Comments
 (0)