diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyReactiveWebServerFactory.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyReactiveWebServerFactory.java index 4174594260..ae5ee2098b 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyReactiveWebServerFactory.java +++ b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/embedded/jetty/JettyReactiveWebServerFactory.java @@ -249,6 +249,7 @@ public class JettyReactiveWebServerFactory extends AbstractReactiveWebServerFact } private void customizeSsl(Server server, InetSocketAddress address) { + Assert.state(getSsl().getServerNameBundles().isEmpty(), "Server name SSL bundles are not supported with Jetty"); new SslServerCustomizer(getHttp2(), address, getSsl().getClientAuth(), getSslBundle()).customize(server); } diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyReactiveWebServerFactoryTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyReactiveWebServerFactoryTests.java index 584149cbfe..adf4549c40 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyReactiveWebServerFactoryTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/embedded/jetty/JettyReactiveWebServerFactoryTests.java @@ -20,6 +20,7 @@ import java.net.ConnectException; import java.net.InetAddress; import java.time.Duration; import java.util.Arrays; +import java.util.List; import org.awaitility.Awaitility; import org.eclipse.jetty.server.ConnectionLimit; @@ -33,11 +34,14 @@ import org.mockito.InOrder; import org.springframework.boot.web.reactive.server.AbstractReactiveWebServerFactory; import org.springframework.boot.web.reactive.server.AbstractReactiveWebServerFactoryTests; import org.springframework.boot.web.server.Shutdown; +import org.springframework.boot.web.server.Ssl; +import org.springframework.boot.web.server.Ssl.ServerNameSslBundle; import org.springframework.http.server.reactive.HttpHandler; import org.springframework.web.reactive.function.client.WebClient; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException; +import static org.assertj.core.api.Assertions.assertThatIllegalStateException; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; @@ -146,6 +150,19 @@ class JettyReactiveWebServerFactoryTests extends AbstractReactiveWebServerFactor assertThat(connectionLimit.getMaxConnections()).isOne(); } + @Test + void sslServerNameBundlesConfigurationThrowsException() { + Ssl ssl = new Ssl(); + ssl.setBundle("test"); + List bundles = List.of(new ServerNameSslBundle("first", "test1"), + new ServerNameSslBundle("second", "test2")); + ssl.setServerNameBundles(bundles); + JettyReactiveWebServerFactory factory = getFactory(); + factory.setSsl(ssl); + assertThatIllegalStateException().isThrownBy(() -> this.webServer = factory.getWebServer(new EchoHandler())) + .withMessageContaining("Server name SSL bundles are not supported with Jetty"); + } + @Override protected String startedLogMessage() { return ((JettyWebServer) this.webServer).getStartedLogMessage();