diff options
| author | Robert Godfrey <rgodfrey@apache.org> | 2013-08-08 15:05:58 +0000 |
|---|---|---|
| committer | Robert Godfrey <rgodfrey@apache.org> | 2013-08-08 15:05:58 +0000 |
| commit | 414074d9fcec48fe395a061d3d31c255c4bbc13f (patch) | |
| tree | 1e7f921c6606c23518f67795bc8955a565692e68 /qpid/java/broker-plugins | |
| parent | e33c4e5c33768233282b69c9cb14dd515d191bb7 (diff) | |
| download | qpid-python-414074d9fcec48fe395a061d3d31c255c4bbc13f.tar.gz | |
QPID-5056 : [Java Broker] Change configuration model to allow for KeyStores/TrustStores which are not JKS files on the filesystem
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1511825 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/broker-plugins')
2 files changed, 19 insertions, 17 deletions
diff --git a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java index e66680ce12..c47ec9b9e7 100644 --- a/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java +++ b/qpid/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java @@ -22,6 +22,9 @@ package org.apache.qpid.server.management.plugin; import java.lang.reflect.Type; import java.net.SocketAddress; +import java.security.GeneralSecurityException; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; import java.util.Collection; import java.util.Collections; import java.util.EnumSet; @@ -30,6 +33,7 @@ import java.util.HashSet; import java.util.Map; import java.util.UUID; +import javax.net.ssl.SSLContext; import org.apache.log4j.Logger; import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.logging.actors.CurrentActor; @@ -239,13 +243,17 @@ public class HttpManagement extends AbstractPluginAdapter implements HttpManagem { throw new IllegalConfigurationException("Key store is not configured. Cannot start management on HTTPS port without keystore"); } - String keyStorePath = (String)keyStore.getAttribute(KeyStore.PATH); - String keyStorePassword = keyStore.getPassword(); - SslContextFactory factory = new SslContextFactory(); - factory.setKeyStorePath(keyStorePath); - factory.setKeyStorePassword(keyStorePassword); - + try + { + SSLContext sslContext = SSLContext.getInstance("TLS"); + sslContext.init(keyStore.getKeyManagers(), null, null); + factory.setSslContext(sslContext); + } + catch (GeneralSecurityException e) + { + throw new RuntimeException("Cannot configure port " + port.getName() + " for transport " + Transport.SSL, e); + } connector = new SslSocketConnector(factory); } else diff --git a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java index d094134e11..32aac51008 100644 --- a/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java +++ b/qpid/java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/JMXManagedObjectRegistry.java @@ -20,6 +20,7 @@ */ package org.apache.qpid.server.jmx; +import javax.net.ssl.KeyManager; import org.apache.log4j.Logger; import org.apache.qpid.server.configuration.BrokerProperties; import org.apache.qpid.server.logging.actors.CurrentActor; @@ -124,26 +125,19 @@ public class JMXManagedObjectRegistry implements ManagedObjectRegistry { KeyStore keyStore = _connectorPort.getKeyStore(); - String keyStorePath = (String) keyStore.getAttribute(KeyStore.PATH); - String keyStorePassword = keyStore.getPassword(); - String keyStoreType = (String) keyStore.getAttribute(KeyStore.TYPE); - String keyManagerFactoryAlgorithm = (String) keyStore.getAttribute(KeyStore.KEY_MANAGER_FACTORY_ALGORITHM); - SSLContext sslContext; try { - sslContext = SSLContextFactory.buildServerContext(keyStorePath, keyStorePassword, keyStoreType, keyManagerFactoryAlgorithm); + + sslContext = SSLContext.getInstance("TLS"); + sslContext.init(keyStore.getKeyManagers(), null, null); } catch (GeneralSecurityException e) { throw new RuntimeException("Unable to create SSLContext for key store", e); } - catch (IOException e) - { - throw new RuntimeException("Unable to create SSLContext for key store", e); - } - CurrentActor.get().message(ManagementConsoleMessages.SSL_KEYSTORE(keyStorePath)); + CurrentActor.get().message(ManagementConsoleMessages.SSL_KEYSTORE(keyStore.getName())); //create the SSL RMI socket factories csf = new SslRMIClientSocketFactory(); |
