You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sa...@apache.org on 2016/05/21 15:56:06 UTC
lucene-solr:branch_6_0: Revert "SOLR-8970: Change SSLTestConfig to
use a keystore file that is included as a resource in the test-framework jar
so users subclassing SolrTestCaseJ4 don't need to preserve magic paths"
Repository: lucene-solr
Updated Branches:
refs/heads/branch_6_0 02a5e1521 -> 4031d3fd4
Revert "SOLR-8970: Change SSLTestConfig to use a keystore file that is included as a resource in the test-framework jar so users subclassing SolrTestCaseJ4 don't need to preserve magic paths"
This reverts commit 124301d69812e4b9a83c440c70736c6d301baf44.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/4031d3fd
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/4031d3fd
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/4031d3fd
Branch: refs/heads/branch_6_0
Commit: 4031d3fd469a7df58bc5642c7a3caec01aa6b23c
Parents: 02a5e15
Author: Steve Rowe <sa...@apache.org>
Authored: Sat May 21 11:55:45 2016 -0400
Committer: Steve Rowe <sa...@apache.org>
Committed: Sat May 21 11:55:45 2016 -0400
----------------------------------------------------------------------
solr/CHANGES.txt | 3 -
solr/test-framework/build.xml | 6 --
.../org/apache/solr/util/SSLTestConfig.java | 102 +++----------------
.../resources/SSLTestConfig.testing.keystore | Bin 2208 -> 0 bytes
4 files changed, 14 insertions(+), 97 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4031d3fd/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 19f473c..7dd3b36 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -74,9 +74,6 @@ Bug Fixes
* SOLR-9093: Fix NullPointerException in TopGroupsShardResponseProcessor. (Christine Poerschke)
-* SOLR-8970: Change SSLTestConfig to use a keystore file that is included as a resource in the
- test-framework jar so users subclassing SolrTestCaseJ4 don't need to preserve magic paths (hossman)
-
* SOLR-9118: HashQParserPlugin should trim partition keys (Joel Bernstein)
* SOLR-9117: The first SolrCore is leaked after reload. (Jessica Cheng via shalin)
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4031d3fd/solr/test-framework/build.xml
----------------------------------------------------------------------
diff --git a/solr/test-framework/build.xml b/solr/test-framework/build.xml
index 1e0d7b5..021076d 100644
--- a/solr/test-framework/build.xml
+++ b/solr/test-framework/build.xml
@@ -38,15 +38,9 @@
</target>
<target name="compile-core" depends="resolve, compile-solr-core, compile-test-framework">
- <!-- TODO: why does test-framework override compile-core to use this special classpath? -->
<compile srcdir="${src.dir}" destdir="${build.dir}/classes/java">
<classpath refid="test.base.classpath"/>
</compile>
-
- <!-- Copy the resources folder (if existent) -->
- <copy todir="${build.dir}/classes/java">
- <fileset dir="${resources.dir}" erroronmissingdir="no"/>
- </copy>
</target>
<!-- redefine the clover setup, because we dont want to run clover for the test-framework -->
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4031d3fd/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java b/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
index 486c9da..35a5eac 100644
--- a/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
+++ b/solr/test-framework/src/java/org/apache/solr/util/SSLTestConfig.java
@@ -17,17 +17,13 @@
package org.apache.solr.util;
import java.io.File;
-import java.util.Random;
import java.security.KeyManagementException;
import java.security.KeyStore;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.security.SecureRandomSpi;
import java.security.UnrecoverableKeyException;
import javax.net.ssl.SSLContext;
-import java.net.MalformedURLException;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
@@ -43,97 +39,27 @@ import org.apache.solr.client.solrj.embedded.SSLConfig;
import org.apache.solr.client.solrj.impl.HttpClientUtil;
import org.apache.solr.client.solrj.impl.HttpClientConfigurer;
import org.apache.solr.common.params.SolrParams;
-
import org.eclipse.jetty.util.resource.Resource;
import org.eclipse.jetty.util.security.CertificateUtils;
-import org.eclipse.jetty.util.ssl.SslContextFactory;
-/**
- * An {@link SSLConfig} that supports reading key/trust store information directly from resource
- * files provided with the Solr test-framework classes
- */
public class SSLTestConfig extends SSLConfig {
-
- /** @deprecated No longer used except by {@link #setSSLSystemProperties} */
public static File TEST_KEYSTORE = ExternalPaths.SERVER_HOME == null ? null
- : new File(ExternalPaths.SERVER_HOME, "../etc/test/solrtest.keystore");
+ : new File(ExternalPaths.SERVER_HOME, "../etc/test/solrtest.keystore");
- /** @deprecated No longer used except by {@link #setSSLSystemProperties} */
private static String TEST_KEYSTORE_PATH = TEST_KEYSTORE != null
- && TEST_KEYSTORE.exists() ? TEST_KEYSTORE.getAbsolutePath() : null;
-
- private static final String TEST_KEYSTORE_RESOURCE = "SSLTestConfig.testing.keystore";
- private static final String TEST_KEYSTORE_PASSWORD = "secret";
-
- private final Resource keyStore;
- private final Resource trustStore;
+ && TEST_KEYSTORE.exists() ? TEST_KEYSTORE.getAbsolutePath() : null;
+ private static String TEST_KEYSTORE_PASSWORD = "secret";
- /** Creates an SSLTestConfig that does not use SSL or client authentication */
public SSLTestConfig() {
this(false, false);
}
-
- /**
- * Create an SSLTestConfig based on a few caller specified options. As needed,
- * keystore/truststore information will be pulled from a hardocded resource file provided
- * by the solr test-framework.
- *
- * @param useSSL - wether SSL should be required.
- * @param clientAuth - whether client authentication should be required.
- */
+
public SSLTestConfig(boolean useSSL, boolean clientAuth) {
- super(useSSL, clientAuth, null, TEST_KEYSTORE_PASSWORD, null, TEST_KEYSTORE_PASSWORD);
- trustStore = keyStore = Resource.newClassPathResource(TEST_KEYSTORE_RESOURCE);
- if (null == keyStore || ! keyStore.exists() ) {
- throw new IllegalStateException("Unable to locate keystore resource file in classpath: "
- + TEST_KEYSTORE_RESOURCE);
- }
+ this(useSSL, clientAuth, TEST_KEYSTORE_PATH, TEST_KEYSTORE_PASSWORD, TEST_KEYSTORE_PATH, TEST_KEYSTORE_PASSWORD);
}
-
- /**
- * Create an SSLTestConfig using explicit paths for files
- * @deprecated - use {@link SSLConfig} directly
- */
- @Deprecated
+
public SSLTestConfig(boolean useSSL, boolean clientAuth, String keyStore, String keyStorePassword, String trustStore, String trustStorePassword) {
super(useSSL, clientAuth, keyStore, keyStorePassword, trustStore, trustStorePassword);
- this.keyStore = tryNewResource(keyStore, "KeyStore");
- this.trustStore = tryNewResource(trustStore, "TrustStore");
- }
-
- /**
- * Helper utility for building resources from arbitrary user input paths/urls
- * if input is null, returns null; otherwise attempts to build Resource and verifies that Resource exists.
- */
- private static final Resource tryNewResource(String userInput, String type) {
- if (null == userInput) {
- return null;
- }
- Resource result;
- try {
- result = Resource.newResource(userInput);
- } catch (MalformedURLException e) {
- throw new IllegalArgumentException("Can't build " + type + " Resource: " + e.getMessage(), e);
- }
- if (! result.exists()) {
- throw new IllegalArgumentException(type + " Resource does not exist " + result.getName());
- }
- return result;
- }
-
- /** NOTE: This method is meaningless unless you explicitly provide paths when constructing this instance
- * @see #SSLTestConfig(boolean,boolean,String,String,String,String)
- */
- @Override
- public String getKeyStore() {
- return super.getKeyStore();
- }
- /** NOTE: This method is meaningless unless you explicitly provide paths when constructing this instance
- * @see #SSLTestConfig(boolean,boolean,String,String,String,String)
- */
- @Override
- public String getTrustStore() {
- return super.getTrustStore();
}
/**
@@ -153,7 +79,7 @@ public class SSLTestConfig extends SSLConfig {
/**
* Builds a new SSLContext for HTTP <b>clients</b> to use when communicating with servers which have
- * been configured based on the settings of this object. Also explicitly allows the use of self-signed
+ * been configured based on the settings of this object. Also explicitly allows the use of self-signed
* certificates (since that's what is almost always used during testing).
*/
public SSLContext buildClientSSLContext() throws KeyManagementException,
@@ -165,24 +91,24 @@ public class SSLTestConfig extends SSLConfig {
// NOTE: KeyStore & TrustStore are swapped because they are from configured from server perspective...
// we are a client - our keystore contains the keys the server trusts, and vice versa
- builder.loadTrustMaterial(buildKeyStore(keyStore, getKeyStorePassword()), new TrustSelfSignedStrategy()).build();
+ builder.loadTrustMaterial(buildKeyStore(getKeyStore(), getKeyStorePassword()), new TrustSelfSignedStrategy()).build();
if (isClientAuthMode()) {
- builder.loadKeyMaterial(buildKeyStore(trustStore, getTrustStorePassword()), getTrustStorePassword().toCharArray());
+ builder.loadKeyMaterial(buildKeyStore(getTrustStore(), getTrustStorePassword()), getTrustStorePassword().toCharArray());
}
return builder.build();
}
-
+
/**
* Constructs a KeyStore using the specified filename and password
*/
- protected static KeyStore buildKeyStore(Resource resource, String password) {
+ protected static KeyStore buildKeyStore(String keyStoreLocation, String password) {
try {
- return CertificateUtils.getKeyStore(resource, "JKS", null, password);
+ return CertificateUtils.getKeyStore(Resource.newResource(keyStoreLocation), "JKS", null, password);
} catch (Exception ex) {
- throw new IllegalStateException("Unable to build KeyStore from resource: " + resource.getName(), ex);
+ throw new IllegalStateException("Unable to build KeyStore from file: " + keyStoreLocation, ex);
}
}
@@ -276,5 +202,5 @@ public class SSLTestConfig extends SSLConfig {
System.clearProperty("javax.net.ssl.trustStore");
System.clearProperty("javax.net.ssl.trustStorePassword");
}
-
+
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4031d3fd/solr/test-framework/src/resources/SSLTestConfig.testing.keystore
----------------------------------------------------------------------
diff --git a/solr/test-framework/src/resources/SSLTestConfig.testing.keystore b/solr/test-framework/src/resources/SSLTestConfig.testing.keystore
deleted file mode 100644
index bcc6ec0..0000000
Binary files a/solr/test-framework/src/resources/SSLTestConfig.testing.keystore and /dev/null differ