Merge branch '1.5.x'
This commit is contained in:
@@ -260,7 +260,7 @@ public class LogbackLoggingSystem extends Slf4JLoggingSystem {
|
||||
return new ShutdownHandler();
|
||||
}
|
||||
|
||||
ch.qos.logback.classic.Logger getLogger(String name) {
|
||||
private ch.qos.logback.classic.Logger getLogger(String name) {
|
||||
LoggerContext factory = getLoggerContext();
|
||||
if (StringUtils.isEmpty(name) || ROOT_LOGGER_NAME.equals(name)) {
|
||||
name = Logger.ROOT_LOGGER_NAME;
|
||||
|
||||
@@ -315,18 +315,20 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac
|
||||
keyPassword = ssl.getKeyStorePassword().toCharArray();
|
||||
}
|
||||
keyManagerFactory.init(keyStore, keyPassword);
|
||||
return getConfigurableAliasKeyManagers(ssl, keyManagerFactory.getKeyManagers());
|
||||
return getConfigurableAliasKeyManagers(ssl,
|
||||
keyManagerFactory.getKeyManagers());
|
||||
}
|
||||
catch (Exception ex) {
|
||||
throw new IllegalStateException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
private KeyManager[] getConfigurableAliasKeyManagers(Ssl ssl, KeyManager[] keyManagers) {
|
||||
private KeyManager[] getConfigurableAliasKeyManagers(Ssl ssl,
|
||||
KeyManager[] keyManagers) {
|
||||
for (int i = 0; i < keyManagers.length; i++) {
|
||||
if (keyManagers[i] instanceof X509ExtendedKeyManager) {
|
||||
keyManagers[i] = new ConfigurableAliasKeyManager((X509ExtendedKeyManager) keyManagers[i],
|
||||
ssl.getKeyAlias());
|
||||
keyManagers[i] = new ConfigurableAliasKeyManager(
|
||||
(X509ExtendedKeyManager) keyManagers[i], ssl.getKeyAlias());
|
||||
}
|
||||
}
|
||||
return keyManagers;
|
||||
@@ -709,54 +711,66 @@ public class UndertowServletWebServerFactory extends AbstractServletWebServerFac
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@link X509ExtendedKeyManager} that supports custom alias configuration.
|
||||
*/
|
||||
private static class ConfigurableAliasKeyManager extends X509ExtendedKeyManager {
|
||||
|
||||
private final X509ExtendedKeyManager sourceKeyManager;
|
||||
private final X509ExtendedKeyManager keyManager;
|
||||
|
||||
private final String alias;
|
||||
|
||||
ConfigurableAliasKeyManager(X509ExtendedKeyManager keyManager, String alias) {
|
||||
this.sourceKeyManager = keyManager;
|
||||
this.keyManager = keyManager;
|
||||
this.alias = alias;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String chooseEngineClientAlias(String[] strings, Principal[] principals, SSLEngine sslEngine) {
|
||||
return this.sourceKeyManager.chooseEngineClientAlias(strings, principals, sslEngine);
|
||||
public String chooseEngineClientAlias(String[] strings, Principal[] principals,
|
||||
SSLEngine sslEngine) {
|
||||
return this.keyManager.chooseEngineClientAlias(strings, principals,
|
||||
sslEngine);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String chooseEngineServerAlias(String s, Principal[] principals, SSLEngine sslEngine) {
|
||||
public String chooseEngineServerAlias(String s, Principal[] principals,
|
||||
SSLEngine sslEngine) {
|
||||
if (this.alias == null) {
|
||||
return this.sourceKeyManager.chooseEngineServerAlias(s, principals, sslEngine);
|
||||
return this.keyManager.chooseEngineServerAlias(s, principals, sslEngine);
|
||||
}
|
||||
return this.alias;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String chooseClientAlias(String[] keyType, Principal[] issuers,
|
||||
Socket socket) {
|
||||
return this.sourceKeyManager.chooseClientAlias(keyType, issuers, socket);
|
||||
return this.keyManager.chooseClientAlias(keyType, issuers, socket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String chooseServerAlias(String keyType, Principal[] issuers,
|
||||
Socket socket) {
|
||||
return this.sourceKeyManager.chooseServerAlias(keyType, issuers, socket);
|
||||
return this.keyManager.chooseServerAlias(keyType, issuers, socket);
|
||||
}
|
||||
|
||||
@Override
|
||||
public X509Certificate[] getCertificateChain(String alias) {
|
||||
return this.sourceKeyManager.getCertificateChain(alias);
|
||||
return this.keyManager.getCertificateChain(alias);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getClientAliases(String keyType, Principal[] issuers) {
|
||||
return this.sourceKeyManager.getClientAliases(keyType, issuers);
|
||||
return this.keyManager.getClientAliases(keyType, issuers);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PrivateKey getPrivateKey(String alias) {
|
||||
return this.sourceKeyManager.getPrivateKey(alias);
|
||||
return this.keyManager.getPrivateKey(alias);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getServerAliases(String keyType, Principal[] issuers) {
|
||||
return this.sourceKeyManager.getServerAliases(keyType, issuers);
|
||||
return this.keyManager.getServerAliases(keyType, issuers);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2012-2016 the original author or authors.
|
||||
* Copyright 2012-2017 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -211,7 +211,8 @@ public class LogbackLoggingSystemTests extends AbstractLoggingSystemTests {
|
||||
public void getLoggingConfigurationForALL() throws Exception {
|
||||
this.loggingSystem.beforeInitialize();
|
||||
this.loggingSystem.initialize(this.initializationContext, null, null);
|
||||
Logger logger = this.loggingSystem.getLogger(getClass().getName());
|
||||
Logger logger = (Logger) StaticLoggerBinder.getSingleton().getLoggerFactory()
|
||||
.getLogger(getClass().getName());
|
||||
logger.setLevel(Level.ALL);
|
||||
LoggerConfiguration configuration = this.loggingSystem
|
||||
.getLoggerConfiguration(getClass().getName());
|
||||
@@ -224,7 +225,8 @@ public class LogbackLoggingSystemTests extends AbstractLoggingSystemTests {
|
||||
this.loggingSystem.beforeInitialize();
|
||||
this.loggingSystem.initialize(this.initializationContext, null, null);
|
||||
this.loggingSystem.setLogLevel(getClass().getName(), LogLevel.TRACE);
|
||||
Logger logger = this.loggingSystem.getLogger(getClass().getName());
|
||||
Logger logger = (Logger) StaticLoggerBinder.getSingleton().getLoggerFactory()
|
||||
.getLogger(getClass().getName());
|
||||
assertThat(logger.getLevel()).isEqualTo(Level.TRACE);
|
||||
}
|
||||
|
||||
|
||||
@@ -49,6 +49,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.zip.GZIPInputStream;
|
||||
|
||||
import javax.net.ssl.SSLContext;
|
||||
import javax.net.ssl.SSLException;
|
||||
import javax.servlet.GenericServlet;
|
||||
import javax.servlet.ServletContext;
|
||||
@@ -68,6 +69,7 @@ import org.apache.http.impl.client.HttpClientBuilder;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.protocol.HttpContext;
|
||||
import org.apache.http.ssl.SSLContextBuilder;
|
||||
import org.apache.http.ssl.TrustStrategy;
|
||||
import org.apache.jasper.EmbeddedServletOptions;
|
||||
import org.apache.jasper.servlet.JspServlet;
|
||||
import org.junit.After;
|
||||
@@ -436,21 +438,21 @@ public abstract class AbstractServletWebServerFactoryTests {
|
||||
@Test
|
||||
public void sslKeyAlias() throws Exception {
|
||||
AbstractServletWebServerFactory factory = getFactory();
|
||||
factory.setSsl(
|
||||
getSsl(null, "password", "test-alias", "src/test/resources/test.jks"));
|
||||
this.webServer = factory.getWebServer(
|
||||
new ServletRegistrationBean<>(new ExampleServlet(true, false), "/hello"));
|
||||
Ssl ssl = getSsl(null, "password", "test-alias", "src/test/resources/test.jks");
|
||||
factory.setSsl(ssl);
|
||||
ServletRegistrationBean<ExampleServlet> registration = new ServletRegistrationBean<>(
|
||||
new ExampleServlet(true, false), "/hello");
|
||||
this.webServer = factory.getWebServer(registration);
|
||||
this.webServer.start();
|
||||
SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(
|
||||
new SSLContextBuilder().loadTrustMaterial(null,
|
||||
new SerialNumberValidatingTrustSelfSignedStrategy("77e7c302"))
|
||||
.build());
|
||||
HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory)
|
||||
.build();
|
||||
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(
|
||||
httpClient);
|
||||
assertThat(getResponse(getLocalUrl("https", "/hello"), requestFactory))
|
||||
.contains("scheme=https");
|
||||
TrustStrategy trustStrategy = new SerialNumberValidatingTrustSelfSignedStrategy(
|
||||
"77e7c302");
|
||||
SSLContext sslContext = new SSLContextBuilder()
|
||||
.loadTrustMaterial(null, trustStrategy).build();
|
||||
HttpClient httpClient = HttpClients.custom()
|
||||
.setSSLSocketFactory(new SSLConnectionSocketFactory(sslContext)).build();
|
||||
String response = getResponse(getLocalUrl("https", "/hello"),
|
||||
new HttpComponentsClientHttpRequestFactory(httpClient));
|
||||
assertThat(response).contains("scheme=https");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user