Commit 0ba192de authored by Andy Wilkinson's avatar Andy Wilkinson

Merge branch '1.5.x'

parents 25c293b8 83fc4b32
...@@ -147,7 +147,7 @@ public class JettyReactiveWebServerFactory extends AbstractReactiveWebServerFact ...@@ -147,7 +147,7 @@ public class JettyReactiveWebServerFactory extends AbstractReactiveWebServerFact
JettyReactiveWebServerFactory.logger JettyReactiveWebServerFactory.logger
.info("Server initialized with port: " + port); .info("Server initialized with port: " + port);
if (getSsl() != null && getSsl().isEnabled()) { if (getSsl() != null && getSsl().isEnabled()) {
customizeSsl(server, port); customizeSsl(server, address);
} }
for (JettyServerCustomizer customizer : getServerCustomizers()) { for (JettyServerCustomizer customizer : getServerCustomizers()) {
customizer.customize(server); customizer.customize(server);
...@@ -189,8 +189,8 @@ public class JettyReactiveWebServerFactory extends AbstractReactiveWebServerFact ...@@ -189,8 +189,8 @@ public class JettyReactiveWebServerFactory extends AbstractReactiveWebServerFact
return wrapper; return wrapper;
} }
private void customizeSsl(Server server, int port) { private void customizeSsl(Server server, InetSocketAddress address) {
new SslServerCustomizer(port, getSsl(), getSslStoreProvider(), getHttp2()) new SslServerCustomizer(address, getSsl(), getSslStoreProvider(), getHttp2())
.customize(server); .customize(server);
} }
......
...@@ -145,7 +145,7 @@ public class JettyServletWebServerFactory extends AbstractServletWebServerFactor ...@@ -145,7 +145,7 @@ public class JettyServletWebServerFactory extends AbstractServletWebServerFactor
server.setHandler(addHandlerWrappers(context)); server.setHandler(addHandlerWrappers(context));
this.logger.info("Server initialized with port: " + port); this.logger.info("Server initialized with port: " + port);
if (getSsl() != null && getSsl().isEnabled()) { if (getSsl() != null && getSsl().isEnabled()) {
customizeSsl(server, port); customizeSsl(server, address);
} }
for (JettyServerCustomizer customizer : getServerCustomizers()) { for (JettyServerCustomizer customizer : getServerCustomizers()) {
customizer.customize(server); customizer.customize(server);
...@@ -193,8 +193,8 @@ public class JettyServletWebServerFactory extends AbstractServletWebServerFactor ...@@ -193,8 +193,8 @@ public class JettyServletWebServerFactory extends AbstractServletWebServerFactor
return wrapper; return wrapper;
} }
private void customizeSsl(Server server, int port) { private void customizeSsl(Server server, InetSocketAddress address) {
new SslServerCustomizer(port, getSsl(), getSslStoreProvider(), getHttp2()) new SslServerCustomizer(address, getSsl(), getSslStoreProvider(), getHttp2())
.customize(server); .customize(server);
} }
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
package org.springframework.boot.web.embedded.jetty; package org.springframework.boot.web.embedded.jetty;
import java.io.IOException; import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.URL; import java.net.URL;
import org.eclipse.jetty.alpn.server.ALPNServerConnectionFactory; import org.eclipse.jetty.alpn.server.ALPNServerConnectionFactory;
...@@ -50,7 +51,7 @@ import org.springframework.util.ResourceUtils; ...@@ -50,7 +51,7 @@ import org.springframework.util.ResourceUtils;
*/ */
class SslServerCustomizer implements JettyServerCustomizer { class SslServerCustomizer implements JettyServerCustomizer {
private final int port; private final InetSocketAddress address;
private final Ssl ssl; private final Ssl ssl;
...@@ -58,9 +59,9 @@ class SslServerCustomizer implements JettyServerCustomizer { ...@@ -58,9 +59,9 @@ class SslServerCustomizer implements JettyServerCustomizer {
private final Http2 http2; private final Http2 http2;
SslServerCustomizer(int port, Ssl ssl, SslStoreProvider sslStoreProvider, SslServerCustomizer(InetSocketAddress address, Ssl ssl,
Http2 http2) { SslStoreProvider sslStoreProvider, Http2 http2) {
this.port = port; this.address = address;
this.ssl = ssl; this.ssl = ssl;
this.sslStoreProvider = sslStoreProvider; this.sslStoreProvider = sslStoreProvider;
this.http2 = http2; this.http2 = http2;
...@@ -70,20 +71,22 @@ class SslServerCustomizer implements JettyServerCustomizer { ...@@ -70,20 +71,22 @@ class SslServerCustomizer implements JettyServerCustomizer {
public void customize(Server server) { public void customize(Server server) {
SslContextFactory sslContextFactory = new SslContextFactory(); SslContextFactory sslContextFactory = new SslContextFactory();
configureSsl(sslContextFactory, this.ssl, this.sslStoreProvider); configureSsl(sslContextFactory, this.ssl, this.sslStoreProvider);
ServerConnector connector = createConnector(server, sslContextFactory, this.port); ServerConnector connector = createConnector(server, sslContextFactory,
this.address);
server.setConnectors(new Connector[] { connector }); server.setConnectors(new Connector[] { connector });
} }
private ServerConnector createConnector(Server server, private ServerConnector createConnector(Server server,
SslContextFactory sslContextFactory, int port) { SslContextFactory sslContextFactory, InetSocketAddress address) {
HttpConfiguration config = new HttpConfiguration(); HttpConfiguration config = new HttpConfiguration();
config.setSendServerVersion(false); config.setSendServerVersion(false);
config.setSecureScheme("https"); config.setSecureScheme("https");
config.setSecurePort(port); config.setSecurePort(address.getPort());
config.addCustomizer(new SecureRequestCustomizer()); config.addCustomizer(new SecureRequestCustomizer());
ServerConnector connector = createServerConnector(server, sslContextFactory, ServerConnector connector = createServerConnector(server, sslContextFactory,
config); config);
connector.setPort(port); connector.setPort(address.getPort());
connector.setHost(address.getHostString());
return connector; return connector;
} }
......
...@@ -288,6 +288,24 @@ public class JettyServletWebServerFactoryTests ...@@ -288,6 +288,24 @@ public class JettyServletWebServerFactoryTests
.isEqualTo(localhost.getHostAddress()); .isEqualTo(localhost.getHostAddress());
} }
@Test
public void specificIPAddressWithSslIsNotReverseResolved() throws Exception {
JettyServletWebServerFactory factory = getFactory();
InetAddress localhost = InetAddress.getLocalHost();
factory.setAddress(InetAddress.getByAddress(localhost.getAddress()));
Ssl ssl = new Ssl();
ssl.setKeyStore("src/test/resources/test.jks");
ssl.setKeyStorePassword("secret");
ssl.setKeyPassword("password");
factory.setSsl(ssl);
this.webServer = factory.getWebServer();
this.webServer.start();
Connector connector = ((JettyWebServer) this.webServer).getServer()
.getConnectors()[0];
assertThat(((ServerConnector) connector).getHost())
.isEqualTo(localhost.getHostAddress());
}
@Override @Override
protected JspServlet getJspServlet() throws Exception { protected JspServlet getJspServlet() throws Exception {
WebAppContext context = (WebAppContext) ((JettyWebServer) this.webServer) WebAppContext context = (WebAppContext) ((JettyWebServer) this.webServer)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment