SSL truststore working.
[lgpl/argeo-commons.git] / eclipse / org.argeo.ext.equinox.jetty / src / org / argeo / equinox / jetty / CmsJettyCustomizer.java
index 9d15143d790a56a4c4eb1981d530bd2ff835940f..e34049506b553ee3bd6948dab80de0092dc20c7f 100644 (file)
@@ -7,7 +7,11 @@ import javax.websocket.DeploymentException;
 import javax.websocket.server.ServerContainer;
 
 import org.eclipse.equinox.http.jetty.JettyCustomizer;
+import org.eclipse.jetty.server.ConnectionFactory;
+import org.eclipse.jetty.server.ServerConnector;
+import org.eclipse.jetty.server.SslConnectionFactory;
 import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.util.ssl.SslContextFactory;
 import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer;
 import org.eclipse.jetty.websocket.javax.server.config.JavaxWebSocketServletContainerInitializer.Configurator;
 import org.osgi.framework.BundleContext;
@@ -15,6 +19,10 @@ import org.osgi.framework.FrameworkUtil;
 
 /** Customises the Jetty HTTP server. */
 public class CmsJettyCustomizer extends JettyCustomizer {
+       static final String SSL_TRUSTSTORE = "ssl.truststore";
+       static final String SSL_TRUSTSTOREPASSWORD = "ssl.truststorepassword";
+       static final String SSL_TRUSTSTORETYPE = "ssl.truststoretype";
+
        private BundleContext bc = FrameworkUtil.getBundle(CmsJettyCustomizer.class).getBundleContext();
 
        public final static String WEBSOCKET_ENABLED = "argeo.websocket.enabled";
@@ -37,4 +45,20 @@ public class CmsJettyCustomizer extends JettyCustomizer {
                return super.customizeContext(context, settings);
 
        }
+
+       @Override
+       public Object customizeHttpsConnector(Object connector, Dictionary<String, ?> settings) {
+               ServerConnector httpsConnector = (ServerConnector) connector;
+               for (ConnectionFactory connectionFactory : httpsConnector.getConnectionFactories()) {
+                       if (connectionFactory instanceof SslConnectionFactory) {
+                               SslContextFactory.Server sslConnectionFactory = ((SslConnectionFactory) connectionFactory)
+                                               .getSslContextFactory();
+                               sslConnectionFactory.setTrustStorePath((String) settings.get(SSL_TRUSTSTORE));
+                               sslConnectionFactory.setTrustStoreType((String) settings.get(SSL_TRUSTSTORETYPE));
+                               sslConnectionFactory.setTrustStorePassword((String) settings.get(SSL_TRUSTSTOREPASSWORD));
+                       }
+               }
+               return super.customizeHttpsConnector(connector, settings);
+       }
+
 }