[jboss-cvs] JBoss Messaging SVN: r3314 - in projects/jbm-mina: src/etc and 9 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Nov 12 11:34:02 EST 2007
Author: jmesnil
Date: 2007-11-12 11:34:02 -0500 (Mon, 12 Nov 2007)
New Revision: 3314
Added:
projects/jbm-mina/src/etc/org/
projects/jbm-mina/src/etc/org/jboss/
projects/jbm-mina/src/etc/org/jboss/messaging/
projects/jbm-mina/src/etc/org/jboss/messaging/remoting/
projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/
projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.keystore
projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.truststore
projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/
projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusSslContextFactory.java
projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusTrustManagerFactory.java
Modified:
projects/jbm-mina/.classpath
projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java
projects/jbm-mina/tests/src/org/jboss/messaging/remoting/SecurityTest.java
projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java
Log:
* for SSL support & test, reuse same keystore than JBM's secure-socket example
Modified: projects/jbm-mina/.classpath
===================================================================
--- projects/jbm-mina/.classpath 2007-11-12 13:52:16 UTC (rev 3313)
+++ projects/jbm-mina/.classpath 2007-11-12 16:34:02 UTC (rev 3314)
@@ -13,6 +13,5 @@
<classpathentry combineaccessrules="false" kind="src" path="/asyncweb-core"/>
<classpathentry combineaccessrules="false" kind="src" path="/mina-filter-codec-http"/>
<classpathentry kind="lib" path="/jboss-messaging/thirdparty/jbossas/core-libs/lib/jboss-common.jar"/>
- <classpathentry combineaccessrules="false" kind="src" path="/mina-example"/>
<classpathentry kind="output" path="bin"/>
</classpath>
Added: projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.keystore
===================================================================
(Binary files differ)
Property changes on: projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.keystore
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.truststore
===================================================================
(Binary files differ)
Property changes on: projects/jbm-mina/src/etc/org/jboss/messaging/remoting/ssl/messaging.truststore
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java
===================================================================
--- projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java 2007-11-12 13:52:16 UTC (rev 3313)
+++ projects/jbm-mina/src/main/org/jboss/messaging/remoting/internal/RemoteDispatcherImpl.java 2007-11-12 16:34:02 UTC (rev 3314)
@@ -12,13 +12,10 @@
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
-import javax.net.ssl.SSLContext;
-
import org.apache.mina.common.CloseFuture;
import org.apache.mina.common.ConnectFuture;
import org.apache.mina.common.DefaultIoFilterChainBuilder;
import org.apache.mina.common.IoSession;
-import org.apache.mina.example.echoserver.ssl.BogusSslContextFactory;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.http.HttpProtocolCodecFactory;
import org.apache.mina.filter.logging.LoggingFilter;
@@ -30,6 +27,7 @@
import org.apache.mina.transport.socket.nio.NioSocketConnector;
import org.jboss.messaging.remoting.PacketHandler;
import org.jboss.messaging.remoting.RemoteDispatcher;
+import org.jboss.messaging.remoting.ssl.BogusSslContextFactory;
import org.jboss.messaging.remoting.transport.http.HTTPFilter;
import org.jboss.messaging.remoting.wireformat.AbstractPacket;
import org.jboss.messaging.remoting.wireformat.PacketCodecFactory;
Added: projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusSslContextFactory.java
===================================================================
--- projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusSslContextFactory.java (rev 0)
+++ projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusSslContextFactory.java 2007-11-12 16:34:02 UTC (rev 3314)
@@ -0,0 +1,145 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.jboss.messaging.remoting.ssl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.GeneralSecurityException;
+import java.security.KeyStore;
+import java.security.Security;
+
+import javax.net.ssl.KeyManagerFactory;
+import javax.net.ssl.SSLContext;
+
+/**
+ * Factory to create a bougus SSLContext.
+ *
+ * @author The Apache MINA Project (dev at mina.apache.org)
+ * @version $Rev: 576647 $, $Date: 2007-09-18 03:41:29 +0200 (Tue, 18 Sep 2007) $
+ */
+public class BogusSslContextFactory {
+
+ /**
+ * Protocol to use.
+ */
+ private static final String PROTOCOL = "TLS";
+
+ private static final String KEY_MANAGER_FACTORY_ALGORITHM;
+
+ static {
+ String algorithm = Security
+ .getProperty("ssl.KeyManagerFactory.algorithm");
+ if (algorithm == null) {
+ algorithm = KeyManagerFactory.getDefaultAlgorithm();
+ }
+
+ KEY_MANAGER_FACTORY_ALGORITHM = algorithm;
+ }
+
+ /**
+ * Bougus Server certificate keystore file name.
+ */
+ private static final String BOGUS_KEYSTORE = "messaging.keystore";
+
+ /**
+ * Bougus keystore password.
+ */
+ private static final char[] BOGUS_PW = "secureexample".toCharArray();
+
+ private static SSLContext serverInstance = null;
+
+ private static SSLContext clientInstance = null;
+
+ /**
+ * Get SSLContext singleton.
+ *
+ * @return SSLContext
+ * @throws java.security.GeneralSecurityException
+ *
+ */
+ public static SSLContext getInstance(boolean server)
+ throws GeneralSecurityException {
+ SSLContext retInstance = null;
+ if (server) {
+ if (serverInstance == null) {
+ synchronized (BogusSslContextFactory.class) {
+ if (serverInstance == null) {
+ try {
+ serverInstance = createBougusServerSslContext();
+ } catch (Exception ioe) {
+ throw new GeneralSecurityException(
+ "Can't create Server SSLContext:" + ioe);
+ }
+ }
+ }
+ }
+ retInstance = serverInstance;
+ } else {
+ if (clientInstance == null) {
+ synchronized (BogusSslContextFactory.class) {
+ if (clientInstance == null) {
+ clientInstance = createBougusClientSslContext();
+ }
+ }
+ }
+ retInstance = clientInstance;
+ }
+ return retInstance;
+ }
+
+ private static SSLContext createBougusServerSslContext()
+ throws GeneralSecurityException, IOException {
+ // Create keystore
+ KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
+ InputStream in = null;
+ try {
+ in = BogusSslContextFactory.class
+ .getResourceAsStream(BOGUS_KEYSTORE);
+ ks.load(in, BOGUS_PW);
+ } finally {
+ if (in != null) {
+ try {
+ in.close();
+ } catch (IOException ignored) {
+ }
+ }
+ }
+
+ // Set up key manager factory to use our key store
+ KeyManagerFactory kmf = KeyManagerFactory
+ .getInstance(KEY_MANAGER_FACTORY_ALGORITHM);
+ kmf.init(ks, BOGUS_PW);
+
+ // Initialize the SSLContext to work with our key managers.
+ SSLContext sslContext = SSLContext.getInstance(PROTOCOL);
+ sslContext.init(kmf.getKeyManagers(),
+ BogusTrustManagerFactory.X509_MANAGERS, null);
+
+ return sslContext;
+ }
+
+ private static SSLContext createBougusClientSslContext()
+ throws GeneralSecurityException {
+ SSLContext context = SSLContext.getInstance(PROTOCOL);
+ context.init(null, BogusTrustManagerFactory.X509_MANAGERS, null);
+ return context;
+ }
+
+}
Added: projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusTrustManagerFactory.java
===================================================================
--- projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusTrustManagerFactory.java (rev 0)
+++ projects/jbm-mina/src/main/org/jboss/messaging/remoting/ssl/BogusTrustManagerFactory.java 2007-11-12 16:34:02 UTC (rev 3314)
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.jboss.messaging.remoting.ssl;
+
+import java.security.InvalidAlgorithmParameterException;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+
+import javax.net.ssl.ManagerFactoryParameters;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactorySpi;
+import javax.net.ssl.X509TrustManager;
+
+/**
+ * Bogus trust manager factory. Creates BogusX509TrustManager
+ *
+ * @author The Apache MINA Project (dev at mina.apache.org)
+ * @version $Rev: 576217 $, $Date: 2007-09-17 01:55:27 +0200 (lun., 17 sept. 2007) $
+ */
+class BogusTrustManagerFactory extends TrustManagerFactorySpi {
+
+ static final X509TrustManager X509 = new X509TrustManager() {
+ public void checkClientTrusted(X509Certificate[] x509Certificates,
+ String s) throws CertificateException {
+ }
+
+ public void checkServerTrusted(X509Certificate[] x509Certificates,
+ String s) throws CertificateException {
+ }
+
+ public X509Certificate[] getAcceptedIssuers() {
+ return new X509Certificate[0];
+ }
+ };
+
+ static final TrustManager[] X509_MANAGERS = new TrustManager[] { X509 };
+
+ public BogusTrustManagerFactory() {
+ }
+
+ @Override
+ protected TrustManager[] engineGetTrustManagers() {
+ return X509_MANAGERS;
+ }
+
+ @Override
+ protected void engineInit(KeyStore keystore) throws KeyStoreException {
+ // noop
+ }
+
+ @Override
+ protected void engineInit(ManagerFactoryParameters managerFactoryParameters)
+ throws InvalidAlgorithmParameterException {
+ // noop
+ }
+}
Modified: projects/jbm-mina/tests/src/org/jboss/messaging/remoting/SecurityTest.java
===================================================================
--- projects/jbm-mina/tests/src/org/jboss/messaging/remoting/SecurityTest.java 2007-11-12 13:52:16 UTC (rev 3313)
+++ projects/jbm-mina/tests/src/org/jboss/messaging/remoting/SecurityTest.java 2007-11-12 16:34:02 UTC (rev 3314)
@@ -40,7 +40,7 @@
serverAcceptor.unbind();
}
- public void sendUsingTransport(TransportType transport, String text)
+ public void sendUsingSecureTransport(TransportType transport, String text)
throws Exception
{
setUp(transport);
@@ -59,13 +59,13 @@
@Test
public void testSSLOverTCP() throws Exception
{
- sendUsingTransport(TCP, "testSSLOverTCP");
+ sendUsingSecureTransport(TCP, "testSSLOverTCP");
}
@Test
public void testSSLOverHTTP() throws Exception
{
- sendUsingTransport(HTTP, "testSSLOverHTTP");
+ sendUsingSecureTransport(HTTP, "testSSLOverHTTP");
}
// Package protected ---------------------------------------------
Modified: projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java
===================================================================
--- projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java 2007-11-12 13:52:16 UTC (rev 3313)
+++ projects/jbm-mina/tests/src/org/jboss/messaging/remoting/TestSupport.java 2007-11-12 16:34:02 UTC (rev 3314)
@@ -6,13 +6,13 @@
import java.net.InetSocketAddress;
import org.apache.mina.common.DefaultIoFilterChainBuilder;
-import org.apache.mina.example.echoserver.ssl.BogusSslContextFactory;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.logging.LoggingFilter;
import org.apache.mina.filter.logging.MdcInjectionFilter;
import org.apache.mina.filter.ssl.SslFilter;
import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
import org.jboss.messaging.remoting.internal.TransportType;
+import org.jboss.messaging.remoting.ssl.BogusSslContextFactory;
import org.jboss.messaging.remoting.transport.http.HTTPFilter;
import org.jboss.messaging.remoting.wireformat.PacketCodecFactory;
import org.safehaus.asyncweb.codec.HttpServerCodecFactory;
More information about the jboss-cvs-commits
mailing list