You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2014/07/15 13:39:58 UTC

[04/27] git commit: Allow loose SSL client validation for testing

Allow loose SSL client validation for testing


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/2485a7f0
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/2485a7f0
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/2485a7f0

Branch: refs/heads/master
Commit: 2485a7f0510ef69b06e3abacd205926ce5d02bb8
Parents: 31ec7e5
Author: Doug Turnbull <dt...@o19s.com>
Authored: Mon Apr 28 21:41:28 2014 -0400
Committer: Doug Turnbull <dt...@o19s.com>
Committed: Mon Apr 28 21:41:28 2014 -0400

----------------------------------------------------------------------
 .../camel/component/solr/SolrEndpoint.java      |  6 ++-
 .../camel/component/solr/JettySolrFactory.java  | 50 ++++++++++++++++++++
 .../solr/SolrComponentTestSupport.java          |  4 +-
 3 files changed, 57 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/2485a7f0/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
index 564aaa4..a43ccfd 100644
--- a/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
+++ b/components/camel-solr/src/main/java/org/apache/camel/component/solr/SolrEndpoint.java
@@ -41,10 +41,14 @@ public class SolrEndpoint extends DefaultEndpoint {
     private Integer maxTotalConnections;
     private Boolean followRedirects;
     private Boolean allowCompression;
+    private String scheme = "http://";
 
     public SolrEndpoint(String endpointUri, SolrComponent component, String address) throws Exception {
         super(endpointUri, component);
-        URL url = new URL("http://" + address);
+        if (endpointUri.startsWith("solrs")) {
+        	scheme = "https://";
+        }
+        URL url = new URL(scheme + address);
         this.url = url.toString();
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/2485a7f0/components/camel-solr/src/test/java/org/apache/camel/component/solr/JettySolrFactory.java
----------------------------------------------------------------------
diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/JettySolrFactory.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/JettySolrFactory.java
index 7a92837..0bd8dba 100644
--- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/JettySolrFactory.java
+++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/JettySolrFactory.java
@@ -1,8 +1,21 @@
 package org.apache.camel.component.solr;
 
 import java.io.File;
+import java.security.KeyManagementException;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
 import java.util.SortedMap;
 
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.conn.ssl.SSLContextBuilder;
+import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
 import org.apache.lucene.util.Constants;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.embedded.SSLConfig;
@@ -14,6 +27,7 @@ import org.eclipse.jetty.servlet.ServletHolder;
 public class JettySolrFactory {
 
 	public static File TEST_KEYSTORE = new File("./target/test-classes/solrtest.keystore");
+	private static boolean mockedSslClient = false;
 
 	private static String TEST_KEYSTORE_PATH = TEST_KEYSTORE.getAbsolutePath();
 	private static String TEST_KEYSTORE_PASSWORD = "secret";
@@ -26,11 +40,47 @@ public class JettySolrFactory {
 				TEST_KEYSTORE_PATH, TEST_KEYSTORE_PASSWORD);
 		return sslConfig;
 	}
+	
+	private static void installAllTrustingClientSsl() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException {
+		SSLContextBuilder builder = new SSLContextBuilder();
+	    builder.loadTrustMaterial(null, new TrustSelfSignedStrategy());
+	    SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
+	            builder.build());
+	    
+//		// Create a trust manager that does not validate certificate chains
+	    final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
+	        @Override
+	        public void checkClientTrusted( final X509Certificate[] chain, final String authType ) {
+	        }
+	        @Override
+	        public void checkServerTrusted( final X509Certificate[] chain, final String authType ) {
+	        }
+	        @Override
+	        public X509Certificate[] getAcceptedIssuers() {
+	            return null;
+	        }
+	    } };
+	    final SSLContext sslContext = SSLContext.getInstance( "TLS" );
+	    sslContext.init( null, trustAllCerts, new java.security.SecureRandom() );
+	    SSLContext.setDefault(sslContext);
+	    
+	    
+//	    // Install the all-trusting trust manager
+//	    final SSLContext sslContext = SSLContext.getInstance( "SSL" );
+//	    sslContext.init( null, trustAllCerts, new java.security.SecureRandom() );
+//	    // Create an ssl socket factory with our all-trusting manager
+//	    final SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
+//        HttpsURLConnection.setDefaultSSLSocketFactory(sslSocketFactory);
+	}
 
 	private static JettySolrRunner createJetty(String solrHome,
 			String configFile, String schemaFile, String context,
 			boolean stopAtShutdown,
 			SortedMap<ServletHolder, String> extraServlets, boolean ssl) throws Exception {
+		if (!mockedSslClient) {
+			installAllTrustingClientSsl();
+			mockedSslClient = true;
+		}
 		// Set appropriate paths for Solr to use.
         System.setProperty("solr.solr.home", solrHome);
         System.setProperty("jetty.testMode", "true");

http://git-wip-us.apache.org/repos/asf/camel/blob/2485a7f0/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrComponentTestSupport.java
----------------------------------------------------------------------
diff --git a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrComponentTestSupport.java b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrComponentTestSupport.java
index 3779621..118229e 100644
--- a/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrComponentTestSupport.java
+++ b/components/camel-solr/src/test/java/org/apache/camel/component/solr/SolrComponentTestSupport.java
@@ -65,11 +65,11 @@ public class SolrComponentTestSupport extends SolrTestSupport {
         Map<String, Object> headers = new HashMap<String, Object>();
         headers.put(SolrConstants.OPERATION, SolrConstants.OPERATION_INSERT);
         headers.put("SolrField.id", id);
-        template.sendBodyAndHeaders("direct:start", null, headers);
+        template.sendBodyAndHeaders("direct:start", "", headers);
     }
 
     protected void solrCommit() {
-        template.sendBodyAndHeader("direct:start", null, SolrConstants.OPERATION, SolrConstants.OPERATION_COMMIT);
+        template.sendBodyAndHeader("direct:start", "", SolrConstants.OPERATION, SolrConstants.OPERATION_COMMIT);
     }
 
     protected QueryResponse executeSolrQuery(String query) throws SolrServerException {