Author: dvaleri Date: Tue Nov 15 15:53:24 2011 New Revision: 1202260 URL: http://svn.apache.org/viewvc?rev=1202260&view=rev Log: [CAMEL-4663] Added support for TLS config using the JSSE Config Utility
Added: camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslContextParametersCometdProducerConsumerTest.java - copied unchanged from r1202247, camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslContextParametersCometdProducerConsumerTest.java camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslContextParametersInUriCometdProducerConsumerTest.java - copied unchanged from r1202247, camel/trunk/components/camel-cometd/src/test/java/org/apache/camel/component/cometd/SslContextParametersInUriCometdProducerConsumerTest.java Modified: camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java Modified: camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java?rev=1202260&r1=1202259&r2=1202260&view=diff ============================================================================== --- camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java (original) +++ camel/trunk/components/camel-cometd/src/main/java/org/apache/camel/component/cometd/CometdComponent.java Tue Nov 15 15:53:24 2011 @@ -22,12 +22,17 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import javax.net.ssl.SSLContext; + import org.apache.camel.Endpoint; +import org.apache.camel.RuntimeCamelException; import org.apache.camel.impl.DefaultComponent; +import org.apache.camel.util.jsse.SSLContextParameters; import org.cometd.bayeux.server.BayeuxServer; import org.cometd.bayeux.server.SecurityPolicy; import org.cometd.server.BayeuxServerImpl; import org.cometd.server.CometdServlet; +import org.eclipse.jetty.http.ssl.SslContextFactory; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandlerCollection; @@ -56,6 +61,7 @@ public class CometdComponent extends Def private SslSocketConnector sslSocketConnector; private SecurityPolicy securityPolicy; private List<BayeuxServer.Extension> extensions; + private SSLContextParameters sslContextParameters; class ConnectorRef { Connector connector; @@ -197,16 +203,28 @@ public class CometdComponent extends Def } public synchronized SslSocketConnector getSslSocketConnector() { - if (sslSocketConnector == null) { - sslSocketConnector = new SslSocketConnector(); - // with default null values, jetty ssl system properties - // and console will be read by jetty implementation - sslSocketConnector.getSslContextFactory().setKeyManagerPassword(sslPassword); - sslSocketConnector.getSslContextFactory().setKeyStorePassword(sslKeyPassword); - if (sslKeystore != null) { - sslSocketConnector.getSslContextFactory().setKeyStore(sslKeystore); + if (sslContextParameters != null && sslSocketConnector == null) { + SslContextFactory sslContextFactory = new CometdComponentSslContextFactory(); + try { + sslContextFactory.setSslContext(sslContextParameters.createSSLContext()); + } catch (Exception e) { + throw new RuntimeCamelException("Error initiating SSLContext.", e); + } + sslSocketConnector = new SslSocketConnector(sslContextFactory); + } + else { + if (sslSocketConnector == null) { + sslSocketConnector = new SslSocketConnector(); + // with default null values, jetty ssl system properties + // and console will be read by jetty implementation + sslSocketConnector.getSslContextFactory().setKeyManagerPassword(sslPassword); + sslSocketConnector.getSslContextFactory().setKeyStorePassword(sslKeyPassword); + if (sslKeystore != null) { + sslSocketConnector.getSslContextFactory().setKeyStore(sslKeystore); + } } } + return sslSocketConnector; } @@ -267,6 +285,14 @@ public class CometdComponent extends Def } extensions.add(extension); } + + public SSLContextParameters getSslContextParameters() { + return sslContextParameters; + } + + public void setSslContextParameters(SSLContextParameters sslContextParameters) { + this.sslContextParameters = sslContextParameters; + } protected Server createServer() throws Exception { Server server = new Server(); @@ -292,4 +318,14 @@ public class CometdComponent extends Def protected void doStart() throws Exception { super.doStart(); } + + /** + * Override the key/trust store check method as it does not account for a factory that has + * a pre-configured {@link SSLContext}. + */ + private static final class CometdComponentSslContextFactory extends SslContextFactory { + @Override + public void checkKeyStore() { + } + } }