From be1eaff9cecb3ff1947346c7e0feab3a41fe2328 Mon Sep 17 00:00:00 2001 From: Robert Gemmell Date: Fri, 12 Apr 2013 16:16:09 +0000 Subject: QPID-4739: complete support for defining multiple key/trust stores and assigning them on a port-specific basis git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1467334 13f79535-47bb-0310-9956-ffa450edef68 --- .../server/management/plugin/HttpManagement.java | 5 +- .../java/resources/addAuthenticationProvider.html | 10 +- .../src/main/java/resources/addBinding.html | 5 +- .../src/main/java/resources/addExchange.html | 5 +- .../src/main/java/resources/addPort.html | 51 ++-- .../src/main/java/resources/addQueue.html | 8 +- .../src/main/java/resources/addVirtualHost.html | 3 +- .../src/main/java/resources/index.html | 1 + .../src/main/java/resources/js/qpid/common/util.js | 74 ++++-- .../java/resources/js/qpid/management/Broker.js | 161 ++++++------ .../java/resources/js/qpid/management/KeyStore.js | 160 +++++++++++ .../resources/js/qpid/management/TrustStore.js | 160 +++++++++++ .../qpid/management/addAuthenticationProvider.js | 2 +- .../resources/js/qpid/management/addKeystore.js | 164 ++++++++++++ .../java/resources/js/qpid/management/addPort.js | 232 +++++++++++----- .../resources/js/qpid/management/controller.js | 6 +- .../java/resources/js/qpid/management/treeView.js | 5 +- .../src/main/java/resources/showBroker.html | 26 +- .../src/main/java/resources/showKeyStore.html | 47 ++++ .../src/main/java/resources/showTrustStore.html | 47 ++++ .../qpid/server/jmx/JMXManagedObjectRegistry.java | 53 ++-- .../server/jmx/QpidSslRMIServerSocketFactory.java | 85 ++++++ .../configuration/startup/BrokerRecoverer.java | 68 +++-- .../java/org/apache/qpid/server/model/Broker.java | 32 +-- .../org/apache/qpid/server/model/KeyStore.java | 22 +- .../java/org/apache/qpid/server/model/Port.java | 10 +- .../org/apache/qpid/server/model/TrustStore.java | 8 +- .../qpid/server/model/adapter/AbstractAdapter.java | 49 ++++ .../model/adapter/AbstractKeyStoreAdapter.java | 51 ++-- .../qpid/server/model/adapter/AmqpPortAdapter.java | 14 +- .../qpid/server/model/adapter/BrokerAdapter.java | 291 ++++++--------------- .../qpid/server/model/adapter/KeyStoreAdapter.java | 175 ++++++++++++- .../qpid/server/model/adapter/PortAdapter.java | 85 +++++- .../qpid/server/model/adapter/PortFactory.java | 14 +- .../server/model/adapter/TrustStoreAdapter.java | 151 ++++++++++- .../apache/qpid/server/util/MapValueConverter.java | 6 +- .../startup/KeyStoreRecovererTest.java | 59 +++-- .../startup/TrustStoreRecovererTest.java | 50 ++-- .../store/ConfigurationEntryStoreTestCase.java | 2 +- .../qpid/server/model/adapter/PortFactoryTest.java | 86 ++++-- .../org/apache/qpid/ssl/SSLContextFactory.java | 2 - .../apache/qpid/test/utils/TestSSLConstants.java | 37 +++ java/systests/etc/config-systests.json | 14 +- .../java/org/apache/qpid/client/ssl/SSLTest.java | 2 + .../auth/manager/ExternalAuthenticationTest.java | 109 ++++++-- .../MultipleAuthenticationManagersTest.java | 2 + .../management/jmx/ManagementLoggingTest.java | 6 +- .../java/org/apache/qpid/systest/rest/Asserts.java | 4 +- .../qpid/systest/rest/BasicAuthRestTest.java | 2 + .../qpid/systest/rest/BrokerRestHttpsTest.java | 4 +- .../apache/qpid/systest/rest/BrokerRestTest.java | 24 +- .../apache/qpid/systest/rest/KeyStoreRestTest.java | 269 +++++++++++++++++++ .../org/apache/qpid/systest/rest/PortRestTest.java | 16 +- .../qpid/systest/rest/TrustStoreRestTest.java | 261 ++++++++++++++++++ .../org/apache/qpid/test/utils/JMXTestUtils.java | 4 - .../qpid/test/utils/TestBrokerConfiguration.java | 16 ++ .../apache/qpid/test/utils/TestSSLConstants.java | 31 --- 57 files changed, 2554 insertions(+), 732 deletions(-) create mode 100644 java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/KeyStore.js create mode 100644 java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/TrustStore.js create mode 100644 java/broker-plugins/management-http/src/main/java/resources/js/qpid/management/addKeystore.js create mode 100644 java/broker-plugins/management-http/src/main/java/resources/showKeyStore.html create mode 100644 java/broker-plugins/management-http/src/main/java/resources/showTrustStore.html create mode 100644 java/broker-plugins/management-jmx/src/main/java/org/apache/qpid/server/jmx/QpidSslRMIServerSocketFactory.java create mode 100644 java/common/src/test/java/org/apache/qpid/test/utils/TestSSLConstants.java create mode 100644 java/systests/src/main/java/org/apache/qpid/systest/rest/KeyStoreRestTest.java create mode 100644 java/systests/src/main/java/org/apache/qpid/systest/rest/TrustStoreRestTest.java delete mode 100644 java/systests/src/main/java/org/apache/qpid/test/utils/TestSSLConstants.java (limited to 'java') diff --git a/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java b/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java index 2f51e30b57..3cc382596a 100644 --- a/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java +++ b/java/broker-plugins/management-http/src/main/java/org/apache/qpid/server/management/plugin/HttpManagement.java @@ -62,6 +62,7 @@ import org.apache.qpid.server.model.Protocol; import org.apache.qpid.server.model.Queue; import org.apache.qpid.server.model.Session; import org.apache.qpid.server.model.State; +import org.apache.qpid.server.model.TrustStore; import org.apache.qpid.server.model.User; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.adapter.AbstractPluginAdapter; @@ -240,7 +241,7 @@ public class HttpManagement extends AbstractPluginAdapter implements HttpManagem } else if (protocols.contains(Protocol.HTTPS)) { - KeyStore keyStore = _broker.getDefaultKeyStore(); + KeyStore keyStore = port.getKeyStore(); if (keyStore == null) { throw new IllegalConfigurationException("Key store is not configured. Cannot start management on HTTPS port without keystore"); @@ -290,6 +291,8 @@ public class HttpManagement extends AbstractPluginAdapter implements HttpManagem addRestServlet(root, "binding", VirtualHost.class, Exchange.class, Queue.class, Binding.class); addRestServlet(root, "port", Port.class); addRestServlet(root, "session", VirtualHost.class, Connection.class, Session.class); + addRestServlet(root, "keystore", KeyStore.class); + addRestServlet(root, "truststore", TrustStore.class); root.addServlet(new ServletHolder(new StructureServlet()), "/rest/structure"); root.addServlet(new ServletHolder(new MessageServlet()), "/rest/message/*"); diff --git a/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html b/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html index 90dd1f1090..f4846ac556 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html +++ b/java/broker-plugins/management-http/src/main/java/resources/addAuthenticationProvider.html @@ -15,15 +15,16 @@ ~ limitations under the License. -->
-
+
+
- + - + @@ -31,8 +32,11 @@
Type*:Type*:
Name*:Name*:
+
+
+
diff --git a/java/broker-plugins/management-http/src/main/java/resources/addBinding.html b/java/broker-plugins/management-http/src/main/java/resources/addBinding.html index 8dbd219c8d..9aebca90d7 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/addBinding.html +++ b/java/broker-plugins/management-http/src/main/java/resources/addBinding.html @@ -32,11 +32,10 @@ dojoType="dijit.form.ValidationTextBox" missingMessage="A name must be supplied" /> -
- +
- +
diff --git a/java/broker-plugins/management-http/src/main/java/resources/addExchange.html b/java/broker-plugins/management-http/src/main/java/resources/addExchange.html index 4a59cd2cbc..8c9968e37a 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/addExchange.html +++ b/java/broker-plugins/management-http/src/main/java/resources/addExchange.html @@ -44,11 +44,10 @@ -
- +
- +
diff --git a/java/broker-plugins/management-http/src/main/java/resources/addPort.html b/java/broker-plugins/management-http/src/main/java/resources/addPort.html index c37b879bd5..391783c6d8 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/addPort.html +++ b/java/broker-plugins/management-http/src/main/java/resources/addPort.html @@ -19,9 +19,9 @@ - -->
-
+
-
+
- -
-
- - -
+ dojoType="dijit.form.CheckBox" data-dojo-props="label: 'Support default protocols:'"/>
+
+ +
+
+ +
+
+
+ + +
+
Trust Stores:
+ + + + + + + +
NamePeers Only
+
diff --git a/java/broker-plugins/management-http/src/main/java/resources/addQueue.html b/java/broker-plugins/management-http/src/main/java/resources/addQueue.html index 950809d5fc..90a0af7ea9 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/addQueue.html +++ b/java/broker-plugins/management-http/src/main/java/resources/addQueue.html @@ -19,8 +19,9 @@ - -->
-
+
+
@@ -173,10 +174,11 @@
Queue Name*:
-
+
+
- +
diff --git a/java/broker-plugins/management-http/src/main/java/resources/addVirtualHost.html b/java/broker-plugins/management-http/src/main/java/resources/addVirtualHost.html index 9b492ef26d..43281f600d 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/addVirtualHost.html +++ b/java/broker-plugins/management-http/src/main/java/resources/addVirtualHost.html @@ -62,10 +62,11 @@
-
+
+
diff --git a/java/broker-plugins/management-http/src/main/java/resources/index.html b/java/broker-plugins/management-http/src/main/java/resources/index.html index a9cb580103..c4fbe77b08 100644 --- a/java/broker-plugins/management-http/src/main/java/resources/index.html +++ b/java/broker-plugins/management-http/src/main/java/resources/index.html @@ -24,6 +24,7 @@ +