Skip to content

Commit

Permalink
Polish "Honour SSL key alias when using Netty"
Browse files Browse the repository at this point in the history
  • Loading branch information
wilkinsona committed Dec 5, 2019
1 parent eda7b7c commit effdc8f
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
*
* @author Brian Clozel
* @author Raheela Aslam
* @author Chris Bono
* @since 2.0.0
*/
public class SslServerCustomizer implements NettyServerCustomizer {
Expand Down Expand Up @@ -185,30 +186,30 @@ private KeyStore loadStore(String type, String provider, String resource, String
* {@link ConfigurableAliasKeyManager}. The actual SPI has to be wrapped as well due
* to the fact that {@link KeyManagerFactory#getKeyManagers()} is final.
*/
private static class ConfigurableAliasKeyManagerFactory extends KeyManagerFactory {
private static final class ConfigurableAliasKeyManagerFactory extends KeyManagerFactory {

static final ConfigurableAliasKeyManagerFactory instance(String alias, String algorithm)
private static ConfigurableAliasKeyManagerFactory instance(String alias, String algorithm)
throws NoSuchAlgorithmException {
KeyManagerFactory originalFactory = KeyManagerFactory.getInstance(algorithm);
ConfigurableAliasKeyManagerFactorySpi spi = new ConfigurableAliasKeyManagerFactorySpi(originalFactory,
alias);
return new ConfigurableAliasKeyManagerFactory(spi, originalFactory.getProvider(), algorithm);
}

ConfigurableAliasKeyManagerFactory(ConfigurableAliasKeyManagerFactorySpi spi, Provider provider,
private ConfigurableAliasKeyManagerFactory(ConfigurableAliasKeyManagerFactorySpi spi, Provider provider,
String algorithm) {
super(spi, provider, algorithm);
}

}

private static class ConfigurableAliasKeyManagerFactorySpi extends KeyManagerFactorySpi {
private static final class ConfigurableAliasKeyManagerFactorySpi extends KeyManagerFactorySpi {

private KeyManagerFactory originalFactory;

private String alias;

ConfigurableAliasKeyManagerFactorySpi(KeyManagerFactory originalFactory, String alias) {
private ConfigurableAliasKeyManagerFactorySpi(KeyManagerFactory originalFactory, String alias) {
this.originalFactory = originalFactory;
this.alias = alias;
}
Expand Down Expand Up @@ -238,13 +239,13 @@ private ConfigurableAliasKeyManager wrapKeyManager(X509ExtendedKeyManager km) {

}

private static class ConfigurableAliasKeyManager extends X509ExtendedKeyManager {
private static final class ConfigurableAliasKeyManager extends X509ExtendedKeyManager {

private final X509ExtendedKeyManager keyManager;

private final String alias;

ConfigurableAliasKeyManager(X509ExtendedKeyManager keyManager, String alias) {
private ConfigurableAliasKeyManager(X509ExtendedKeyManager keyManager, String alias) {
this.keyManager = keyManager;
this.alias = alias;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
* Tests for {@link NettyReactiveWebServerFactory}.
*
* @author Brian Clozel
* @author Chris Bono
*/
public class NettyReactiveWebServerFactoryTests extends AbstractReactiveWebServerFactoryTests {

Expand Down Expand Up @@ -94,14 +95,14 @@ public void useForwardedHeaders() {
}

@Test
public void testSslWithValidAlias() {
public void whenSslIsConfiguredWithAValidAliasARequestSucceeds() {
Mono<String> result = testSslWithAlias("test-alias");
StepVerifier.setDefaultTimeout(Duration.ofSeconds(30));
StepVerifier.create(result).expectNext("Hello World").verifyComplete();
}

@Test
public void testSslWithInvalidAlias() {
public void whenSslIsConfiguredWithAnInvalidAliasTheSslHandshakeFails() {
Mono<String> result = testSslWithAlias("test-alias-bad");
StepVerifier.setDefaultTimeout(Duration.ofSeconds(30));
StepVerifier.create(result).expectErrorMatches((throwable) -> throwable instanceof SSLHandshakeException
Expand Down

0 comments on commit effdc8f

Please sign in to comment.