Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ public EmbeddedServletContainer getEmbeddedServletContainer(
SslContextFactory sslContextFactory = new SslContextFactory();
configureSsl(sslContextFactory, getSsl());
AbstractConnector connector = getSslServerConnectorFactory()
.getConnector(server, sslContextFactory, port);
.createConnector(server, sslContextFactory, address);
server.setConnectors(new Connector[] { connector });
}
for (JettyServerCustomizer customizer : getServerCustomizers()) {
Expand Down Expand Up @@ -700,8 +700,8 @@ private void addJettyErrorPages(ErrorHandler errorHandler,
*/
private interface SslServerConnectorFactory {

AbstractConnector getConnector(Server server, SslContextFactory sslContextFactory,
int port);
AbstractConnector createConnector(Server server, SslContextFactory sslContextFactory,
InetSocketAddress address);

}

Expand All @@ -712,8 +712,8 @@ private static class Jetty9SslServerConnectorFactory
implements SslServerConnectorFactory {

@Override
public ServerConnector getConnector(Server server,
SslContextFactory sslContextFactory, int port) {
public ServerConnector createConnector(Server server,
SslContextFactory sslContextFactory, InetSocketAddress address) {
HttpConfiguration config = new HttpConfiguration();
config.setSendServerVersion(false);
config.addCustomizer(new SecureRequestCustomizer());
Expand All @@ -722,7 +722,8 @@ public ServerConnector getConnector(Server server,
sslContextFactory, HttpVersion.HTTP_1_1.asString());
ServerConnector serverConnector = new ServerConnector(server,
sslConnectionFactory, connectionFactory);
serverConnector.setPort(port);
serverConnector.setPort(address.getPort());
serverConnector.setHost(address.getHostString());
return serverConnector;
}

Expand All @@ -735,16 +736,18 @@ private static class Jetty8SslServerConnectorFactory
implements SslServerConnectorFactory {

@Override
public AbstractConnector getConnector(Server server,
SslContextFactory sslContextFactory, int port) {
public AbstractConnector createConnector(Server server,
SslContextFactory sslContextFactory, InetSocketAddress address) {
try {
Class<?> connectorClass = Class
.forName("org.eclipse.jetty.server.ssl.SslSocketConnector");
AbstractConnector connector = (AbstractConnector) connectorClass
.getConstructor(SslContextFactory.class)
.newInstance(sslContextFactory);
connector.getClass().getMethod("setPort", int.class).invoke(connector,
port);
address.getPort());
connector.getClass().getMethod("setHost", String.class).invoke(connector,
address.getHostString());
return connector;
}
catch (Exception ex) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,26 @@ public void sslEnabledProtocolsConfiguration() throws Exception {
.isEqualTo(new String[] { "TLSv1.1" });
}

@Test
public void sslEnabledSpecificIPAddress() throws Exception {
Ssl ssl = new Ssl();
ssl.setKeyStore("src/test/resources/test.jks");
ssl.setKeyStorePassword("secret");
ssl.setKeyPassword("password");

JettyEmbeddedServletContainerFactory factory = getFactory();
factory.setSsl(ssl);
factory.setAddress(InetAddress.getByAddress(InetAddress.getLocalHost().getAddress()));

this.container = factory.getEmbeddedServletContainer();
this.container.start();

JettyEmbeddedServletContainer jettyContainer = (JettyEmbeddedServletContainer) this.container;
ServerConnector connector = (ServerConnector) jettyContainer.getServer()
.getConnectors()[0];
assertThat(connector.getHost()).isEqualTo(factory.getAddress().getHostAddress());
}

private void assertTimeout(JettyEmbeddedServletContainerFactory factory,
int expected) {
this.container = factory.getEmbeddedServletContainer();
Expand Down