You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2018/04/12 09:06:22 UTC

httpcomponents-core git commit: HTTPCORE-519: updated all key material used by unit and integration tests [Forced Update!]

Repository: httpcomponents-core
Updated Branches:
  refs/heads/4.4.x d25527d44 -> 5eef139d3 (forced update)


HTTPCORE-519: updated all key material used by unit and integration tests


Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/commit/5eef139d
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/tree/5eef139d
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/diff/5eef139d

Branch: refs/heads/4.4.x
Commit: 5eef139d3feffd5422290c02331948382a2ff4ae
Parents: 36fa75b
Author: Oleg Kalnichevski <ol...@apache.org>
Authored: Wed Apr 11 16:20:45 2018 +0200
Committer: Oleg Kalnichevski <ol...@apache.org>
Committed: Thu Apr 12 11:04:25 2018 +0200

----------------------------------------------------------------------
 .../src/test/resources/test-DSA-1024.keystore   | Bin 1344 -> 0 bytes
 httpcore-nio/src/test/resources/test-ssl.txt    |  31 ++
 httpcore-nio/src/test/resources/test.keystore   | Bin 2181 -> 2242 bytes
 .../apache/http/ssl/TestSSLContextBuilder.java  |  33 +-
 httpcore/src/test/resources/CA/ca-cert.pem      |  23 --
 httpcore/src/test/resources/CA/ca-key.pem       |  30 --
 httpcore/src/test/resources/CA/openssl.cnf      | 357 -------------------
 httpcore/src/test/resources/ca.keystore         | Bin 0 -> 2332 bytes
 .../src/test/resources/test-client.keystore     | Bin 6005 -> 7649 bytes
 .../src/test/resources/test-keypasswd.keystore  | Bin 1378 -> 2242 bytes
 .../src/test/resources/test-server.keystore     | Bin 3518 -> 4342 bytes
 httpcore/src/test/resources/test-ssl.txt        | 193 ++++++++++
 httpcore/src/test/resources/test.keystore       | Bin 1344 -> 2242 bytes
 13 files changed, 244 insertions(+), 423 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore-nio/src/test/resources/test-DSA-1024.keystore
----------------------------------------------------------------------
diff --git a/httpcore-nio/src/test/resources/test-DSA-1024.keystore b/httpcore-nio/src/test/resources/test-DSA-1024.keystore
deleted file mode 100644
index 917f83e..0000000
Binary files a/httpcore-nio/src/test/resources/test-DSA-1024.keystore and /dev/null differ

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore-nio/src/test/resources/test-ssl.txt
----------------------------------------------------------------------
diff --git a/httpcore-nio/src/test/resources/test-ssl.txt b/httpcore-nio/src/test/resources/test-ssl.txt
new file mode 100644
index 0000000..47ee513
--- /dev/null
+++ b/httpcore-nio/src/test/resources/test-ssl.txt
@@ -0,0 +1,31 @@
+# ====================================================================
+# 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.
+# ====================================================================
+#
+# This software consists of voluntary contributions made by many
+# individuals on behalf of the Apache Software Foundation.  For more
+# information on the Apache Software Foundation, please see
+# <http://www.apache.org/>.
+
+keytool -genkey \
+  -keystore test.keystore -storepass nopassword \
+  -keyalg RSA -keysize 2048 \
+  -alias simple-http-server \
+  -validity 100000 \
+  -dname "CN=localhost, OU=Apache HttpComponents, O=Apache Software Foundation" \
+  -ext SAN="DNS:localhost"

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore-nio/src/test/resources/test.keystore
----------------------------------------------------------------------
diff --git a/httpcore-nio/src/test/resources/test.keystore b/httpcore-nio/src/test/resources/test.keystore
index 8234a3d..3ac5ac0 100644
Binary files a/httpcore-nio/src/test/resources/test.keystore and b/httpcore-nio/src/test/resources/test.keystore differ

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore/src/test/java/org/apache/http/ssl/TestSSLContextBuilder.java
----------------------------------------------------------------------
diff --git a/httpcore/src/test/java/org/apache/http/ssl/TestSSLContextBuilder.java b/httpcore/src/test/java/org/apache/http/ssl/TestSSLContextBuilder.java
index 1a58dd9..af7f0a3 100644
--- a/httpcore/src/test/java/org/apache/http/ssl/TestSSLContextBuilder.java
+++ b/httpcore/src/test/java/org/apache/http/ssl/TestSSLContextBuilder.java
@@ -76,6 +76,7 @@ import org.junit.Test;
 public class TestSSLContextBuilder {
 
     private static final String PROVIDER_SUN_JSSE = "SunJSSE";
+    private static final int TIMEOUT = 5000;
     private ExecutorService executorService;
 
     @After
@@ -233,7 +234,7 @@ public class TestSSLContextBuilder {
         final int localPort = serverSocket.getLocalPort();
         final Socket clientSocket = clientSslContext.getSocketFactory().createSocket();
         try {
-            clientSocket.connect(new InetSocketAddress("localhost", localPort), 5000);
+            clientSocket.connect(new InetSocketAddress("localhost", localPort), TIMEOUT);
             final InputStream inputStream = clientSocket.getInputStream();
             Assert.assertEquals('H', inputStream.read());
             Assert.assertEquals('i', inputStream.read());
@@ -279,7 +280,8 @@ public class TestSSLContextBuilder {
         final int localPort = serverSocket.getLocalPort();
         final SSLSocket clientSocket = (SSLSocket) clientSslContext.getSocketFactory().createSocket();
         try {
-            clientSocket.connect(new InetSocketAddress("localhost", localPort), 5000);
+            clientSocket.connect(new InetSocketAddress("localhost", localPort), TIMEOUT);
+            clientSocket.setSoTimeout(TIMEOUT);
             clientSocket.startHandshake();
         } finally {
             clientSocket.close();
@@ -336,7 +338,8 @@ public class TestSSLContextBuilder {
         final int localPort = serverSocket.getLocalPort();
         final SSLSocket clientSocket = (SSLSocket) clientSslContext.getSocketFactory().createSocket();
         try {
-            clientSocket.connect(new InetSocketAddress("localhost", localPort), 5000);
+            clientSocket.connect(new InetSocketAddress("localhost", localPort), TIMEOUT);
+            clientSocket.setSoTimeout(TIMEOUT);
             final InputStream inputStream = clientSocket.getInputStream();
             Assert.assertEquals('H', inputStream.read());
             Assert.assertEquals('i', inputStream.read());
@@ -354,8 +357,7 @@ public class TestSSLContextBuilder {
         final X509Certificate cert1 = certs[0];
         final Principal subjectDN1 = cert1.getSubjectDN();
         Assert.assertNotNull(subjectDN1);
-        Assert.assertEquals("CN=Test Server, OU=HttpComponents Project, O=Apache Software Foundation, " +
-                "L=Unknown, ST=Unknown, C=Unknown", subjectDN1.getName());
+        Assert.assertEquals("CN=Test Server, OU=HttpComponents Project, O=Apache Software Foundation", subjectDN1.getName());
         final X509Certificate cert2 = certs[1];
         final Principal subjectDN2 = cert2.getSubjectDN();
         Assert.assertNotNull(subjectDN2);
@@ -411,7 +413,8 @@ public class TestSSLContextBuilder {
         final int localPort = serverSocket.getLocalPort();
         final SSLSocket clientSocket = (SSLSocket) clientSslContext.getSocketFactory().createSocket();
         try {
-            clientSocket.connect(new InetSocketAddress("localhost", localPort), 5000);
+            clientSocket.connect(new InetSocketAddress("localhost", localPort), TIMEOUT);
+            clientSocket.setSoTimeout(TIMEOUT);
             clientSocket.startHandshake();
             final InputStream inputStream = clientSocket.getInputStream();
             Assert.assertEquals('H', inputStream.read());
@@ -460,7 +463,8 @@ public class TestSSLContextBuilder {
         final int localPort = serverSocket.getLocalPort();
         final SSLSocket clientSocket = (SSLSocket) clientSslContext.getSocketFactory().createSocket();
         try {
-            clientSocket.connect(new InetSocketAddress("localhost", localPort), 5000);
+            clientSocket.connect(new InetSocketAddress("localhost", localPort), TIMEOUT);
+            clientSocket.setSoTimeout(TIMEOUT);
             clientSocket.startHandshake();
         } finally {
             clientSocket.close();
@@ -507,7 +511,8 @@ public class TestSSLContextBuilder {
         final int localPort = serverSocket.getLocalPort();
         final SSLSocket clientSocket = (SSLSocket) clientSslContext.getSocketFactory().createSocket();
         try {
-            clientSocket.connect(new InetSocketAddress("localhost", localPort), 5000);
+            clientSocket.connect(new InetSocketAddress("localhost", localPort), TIMEOUT);
+            clientSocket.setSoTimeout(TIMEOUT);
             clientSocket.startHandshake();
             final InputStream inputStream = clientSocket.getInputStream();
             Assert.assertEquals('H', inputStream.read());
@@ -573,7 +578,8 @@ public class TestSSLContextBuilder {
         final int localPort = serverSocket.getLocalPort();
         final SSLSocket clientSocket = (SSLSocket) clientSslContext.getSocketFactory().createSocket();
         try {
-            clientSocket.connect(new InetSocketAddress("localhost", localPort), 5000);
+            clientSocket.connect(new InetSocketAddress("localhost", localPort), TIMEOUT);
+            clientSocket.setSoTimeout(TIMEOUT);
             clientSocket.startHandshake();
             final InputStream inputStream = clientSocket.getInputStream();
             Assert.assertEquals('H', inputStream.read());
@@ -585,8 +591,7 @@ public class TestSSLContextBuilder {
 
         final Principal clientPrincipal = future.get(5, TimeUnit.SECONDS);
         Assert.assertNotNull(clientPrincipal);
-        Assert.assertEquals("CN=Test Client 2,OU=HttpComponents Project,O=Apache Software Foundation," +
-                "L=Unknown,ST=Unknown,C=Unknown", clientPrincipal.getName());
+        Assert.assertEquals("CN=Test Client 2,OU=HttpComponents Project,O=Apache Software Foundation", clientPrincipal.getName());
     }
 
 
@@ -630,7 +635,8 @@ public class TestSSLContextBuilder {
             final Set<String> supportedClientProtocols = new LinkedHashSet<String>(Arrays.asList(clientSocket.getSupportedProtocols()));
             Assert.assertTrue(supportedClientProtocols.contains("SSLv3"));
             clientSocket.setEnabledProtocols(new String[] {"SSLv3"} );
-            clientSocket.connect(new InetSocketAddress("localhost", localPort), 5000);
+            clientSocket.connect(new InetSocketAddress("localhost", localPort), TIMEOUT);
+            clientSocket.setSoTimeout(TIMEOUT);
             clientSocket.startHandshake();
         } finally {
             clientSocket.close();
@@ -678,7 +684,8 @@ public class TestSSLContextBuilder {
                     Arrays.asList(clientSocket.getSupportedProtocols()));
             Assert.assertTrue(supportedClientProtocols.contains("TLSv1"));
             clientSocket.setEnabledProtocols(new String[] { "TLSv1" });
-            clientSocket.connect(new InetSocketAddress("localhost", localPort), 5000);
+            clientSocket.connect(new InetSocketAddress("localhost", localPort), TIMEOUT);
+            clientSocket.setSoTimeout(TIMEOUT);
             final Class<? extends IOException> expectedExceptionClass = SystemUtils.IS_OS_WINDOWS
                     && SystemUtils.isJavaVersionAtLeast(JavaVersion.JAVA_1_7) ? SocketException.class
                             : SSLHandshakeException.class;

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore/src/test/resources/CA/ca-cert.pem
----------------------------------------------------------------------
diff --git a/httpcore/src/test/resources/CA/ca-cert.pem b/httpcore/src/test/resources/CA/ca-cert.pem
deleted file mode 100644
index a40c763..0000000
--- a/httpcore/src/test/resources/CA/ca-cert.pem
+++ /dev/null
@@ -1,23 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIDyTCCArGgAwIBAgIJAO3mCIu9mboMMA0GCSqGSIb3DQEBCwUAMHoxIzAhBgNV
-BAoMGkFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uMR8wHQYDVQQLDBZIdHRwQ29t
-cG9uZW50cyBQcm9qZWN0MRAwDgYDVQQDDAdUZXN0IENBMSAwHgYJKoZIhvcNAQkB
-FhFkZXZAaGMuYXBhY2hlLm9yZzAgFw0xNDEwMTMxNTAxMjBaGA8yMjg4MDcyODE1
-MDEyMFowejEjMCEGA1UECgwaQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24xHzAd
-BgNVBAsMFkh0dHBDb21wb25lbnRzIFByb2plY3QxEDAOBgNVBAMMB1Rlc3QgQ0Ex
-IDAeBgkqhkiG9w0BCQEWEWRldkBoYy5hcGFjaGUub3JnMIIBIjANBgkqhkiG9w0B
-AQEFAAOCAQ8AMIIBCgKCAQEApXhHtKRvAxbLI+f21zNe68dkVXAhSMIfHQJGb2en
-S1H8yE4HPIb4vPQ0U7fQCb7RXplm6cHExpof4cO3DmyqD5KeQk0TdM8XrhviDgwj
-Y0KQ/lgwGHR5CpYoZ6LYWaLSE/wt9dVu80UcK8a3hW9G0X/4b79fMO6HYDix+CI4
-b17sqZ4K0tWKA10Xe+2RJU8Y01pPBaPR/UsAn+a1pZ6f8BhL879oWHfLWKcgZOYP
-U4sYED0S8gs4/ED1zRj2/uHb313sHTl+OU4X5v+OvwBvbNBrl5qfMTZnRNxlOfRq
-UTJdcopsp2aNeqHiorSDOrHwMIJpxQ2XqHT2l9s8msXf4wIDAQABo1AwTjAdBgNV
-HQ4EFgQUA+Tn2g9k2xMevYWrdrwpyi+nx0swHwYDVR0jBBgwFoAUA+Tn2g9k2xMe
-vYWrdrwpyi+nx0swDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAFVEp
-8Nv6JoFY7oGgu6068fH/kq7A3SllqMpbv7dddI9fgwy352cBtg6PkYkGtEE037xs
-FQSYV1NiAkNWTJER+Q+kVbQrhuPNKZqh1g0sUKwv3X20BmgJ9hbU9klWZjdjujyd
-h9Ybjuntkn5XPp1zN6zHD0sQReEJnRlD6FT1axrQWpICzE4qoo8k64G+6/rqFywc
-oMc/Of3KCAHjtbWklEu97hjBvGC/nEP4/VhRrjWWSeGHv88LCyO/Yg6v3zrZHFLW
-+KhsDCPyLxSSISFskLQfukiqf2lr87kQq/oF27sAr3sR3Jqh4qzflM2XLgjmZuRE
-OrHT6lvUemRyksA5qg==
------END CERTIFICATE-----

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore/src/test/resources/CA/ca-key.pem
----------------------------------------------------------------------
diff --git a/httpcore/src/test/resources/CA/ca-key.pem b/httpcore/src/test/resources/CA/ca-key.pem
deleted file mode 100644
index a8a3042..0000000
--- a/httpcore/src/test/resources/CA/ca-key.pem
+++ /dev/null
@@ -1,30 +0,0 @@
------BEGIN ENCRYPTED PRIVATE KEY-----
-MIIFDjBABgkqhkiG9w0BBQ0wMzAbBgkqhkiG9w0BBQwwDgQIq0bLh96mWv4CAggA
-MBQGCCqGSIb3DQMHBAimZqUiELx13QSCBMgaLWrGFqveIzwQUsebS6FBdVq0lodz
-Vlekje8ycFDYSd21V9jPMwrSupZceeBQjCrpyLZ3oPkR+MvObmznev8XYcJzVCkF
-E9ApAaHZe248wWcu1/D7auHNG3GyZfvYS0c//Rs2OzMZfsUvX93RVullCRREvCYS
-qXhaO3ywFocndKRpSnkOBs2SRa0yc9POl4n4dwyKhsJUaMSmhPbJr9UBvCbXHZIA
-gLcSWzVon3EtZCSubMp9eo90G5MzIXEyPBTcIHwpyqRWTkaTUTq4R0c4/RTX+l7K
-OZuRIEeBEW6z009fSagymN/KEH3gUkg5pG6i1YWF63OVKTMGn+yQGWwYXwTyEGi5
-HZpD98wh3ycucmL93XLk+yYXQcTp1i+u4GaXNWGREQvNW6onCGeg6WWj1PrIsqoi
-TZ2pgQUJWPR1K3037hY0o9sakAkyYSyTPVvHOUcbf3+GhqGS1FsSNOxKRNpYm/3v
-Gf0SUN8BavPliK9NSU5JAbprr/hoL5o72dCX9DiOgwfW3HyD/gLh7sVyVBdAzTnE
-XFaYFnrb5QnqHbgWvaLbJUT5K7MW3OFLVConydYtYdaUl5z49OflhgnvYOPgTSUr
-k9c7exQjedAduPd8dXODh9l2g+QEXJoT+YYFEYHkQlsZgH1hCLXD1TmAeI4LMklb
-vPaGE8Ouj1pfbejdTNsqLfW0IiR/jZzEjRgqrueMf2VUjtqTZyPayc2rU4kOoKhv
-JzQ0wOFhgRztWJy2voRe+iYss3ToqZ7qLpjBfCTsxCJqbuaGeJWWSnOlDpSysgr+
-q4BvCzDcvf/0mKD2cQuJx/kynQMCcWB/VegRsQ24Y+3T7IU1w8ccmRfSZ93AwkAh
-MKJzKaVhD/gn9vUG/we18p7RMIc9pk1o2Z2Ru3mKjkO3QYRP6Y7yk0ah2JKrHIPf
-LWfPuHmtzHQXkY3RbVvxvwD/+qHm8ogXq52w8cpGhY5UwAEHrLLwypdBHccrAJjo
-bE13M/MrtTry/k8OMRqhhRzHUXBq6mLaWffCaP2SAVfJEez2iASvGJFvgy3bSkWY
-rwWMSfZKDkauwDMW5gpFrpeuqgD64LO72sN01riVDpaEyNODRCEEBGce+O+91R9K
-TLVgRYFsxClyZy1nynD66gkTepEm1yOgcdqV3651Os+TGm39jGYHy1k9mPz8ypqf
-8n8uw4nV3SbIwfpy4Z8onHixfc/Fugm7yQHW4dSuCpahyIJHom6Cq7SZfPuo9e3t
-8tqaxvK4U/dAXoimvN1eakH2FoVFIj3mk7OAKBgmDINH9GlzXPwRsTfiJSP4Xaod
-ouWIQLLeXQuuOc5VJd1Xex75o8ciSOomAS0uR4Fvk/2NkAm0EMddjZnuWLQaXPry
-JiUIgSx3w3yRq9RSQOxDRQpp2nP2roX7cyeGPzTmeujikExGTa3YBxuAShDLx5pt
-fpi0ol8H8ohDU4eV9pv96KRBG9e8sQf1zpGjeYLTFiN35IQxYJx3HTXp9/oFWkmA
-OdCEwggIKJ/RtgkWOWogTilQVA41p4XZr661fxoSE86sHXkZKn8IGnAKLFT46nWM
-IYVDalYUiSNZr+KbzmLIV3LmYE3mlqGI4vDvQtd9zQk/uatYBc2DetuTWPZHCEKS
-3Nk=
------END ENCRYPTED PRIVATE KEY-----

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore/src/test/resources/CA/openssl.cnf
----------------------------------------------------------------------
diff --git a/httpcore/src/test/resources/CA/openssl.cnf b/httpcore/src/test/resources/CA/openssl.cnf
deleted file mode 100644
index af03c6d..0000000
--- a/httpcore/src/test/resources/CA/openssl.cnf
+++ /dev/null
@@ -1,357 +0,0 @@
-# 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.
-#
-
-# This definition stops the following lines choking if HOME isn't
-# defined.
-HOME			= .
-RANDFILE		= $ENV::HOME/.rnd
-
-# Extra OBJECT IDENTIFIER info:
-#oid_file		= $ENV::HOME/.oid
-oid_section		= new_oids
-
-# To use this configuration file with the "-extfile" option of the
-# "openssl x509" utility, name here the section containing the
-# X.509v3 extensions to use:
-# extensions		= 
-# (Alternatively, use a configuration file that has only
-# X.509v3 extensions in its main [= default] section.)
-
-[ new_oids ]
-
-# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
-# Add a simple OID like this:
-# testoid1=1.2.3.4
-# Or use config file substitution like this:
-# testoid2=${testoid1}.5.6
-
-# Policies used by the TSA examples.
-tsa_policy1 = 1.2.3.4.1
-tsa_policy2 = 1.2.3.4.5.6
-tsa_policy3 = 1.2.3.4.5.7
-
-####################################################################
-[ ca ]
-default_ca	= CA_default		# The default ca section
-
-####################################################################
-[ CA_default ]
-
-dir		= ./demoCA		# Where everything is kept
-certs		= $dir/certs		# Where the issued certs are kept
-crl_dir		= $dir/crl		# Where the issued crl are kept
-database	= $dir/index.txt	# database index file.
-#unique_subject	= no			# Set to 'no' to allow creation of
-					# several ctificates with same subject.
-new_certs_dir	= $dir/newcerts		# default place for new certs.
-
-certificate	= $dir/cacert.pem 	# The CA certificate
-serial		= $dir/serial 		# The current serial number
-crlnumber	= $dir/crlnumber	# the current crl number
-					# must be commented out to leave a V1 CRL
-crl		= $dir/crl.pem 		# The current CRL
-private_key	= $dir/private/cakey.pem# The private key
-RANDFILE	= $dir/private/.rand	# private random number file
-
-x509_extensions	= usr_cert		# The extentions to add to the cert
-
-# Comment out the following two lines for the "traditional"
-# (and highly broken) format.
-name_opt 	= ca_default		# Subject Name options
-cert_opt 	= ca_default		# Certificate field options
-
-# Extension copying option: use with caution.
-# copy_extensions = copy
-
-# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
-# so this is commented out by default to leave a V1 CRL.
-# crlnumber must also be commented out to leave a V1 CRL.
-# crl_extensions	= crl_ext
-
-default_days	= 365			# how long to certify for
-default_crl_days= 30			# how long before next CRL
-default_md	= default		# use public key default MD
-preserve	= no			# keep passed DN ordering
-
-# A few difference way of specifying how similar the request should look
-# For type CA, the listed attributes must be the same, and the optional
-# and supplied fields are just that :-)
-policy		= policy_match
-
-# For the CA policy
-[ policy_match ]
-countryName		= match
-stateOrProvinceName	= match
-organizationName	= match
-organizationalUnitName	= optional
-commonName		= supplied
-emailAddress		= optional
-
-# For the 'anything' policy
-# At this point in time, you must list all acceptable 'object'
-# types.
-[ policy_anything ]
-countryName		= optional
-stateOrProvinceName	= optional
-localityName		= optional
-organizationName	= optional
-organizationalUnitName	= optional
-commonName		= supplied
-emailAddress		= optional
-
-####################################################################
-[ req ]
-default_bits		= 2048
-default_keyfile 	= privkey.pem
-distinguished_name	= req_distinguished_name
-attributes		= req_attributes
-x509_extensions	= v3_ca	# The extentions to add to the self signed cert
-
-# Passwords for private keys if not present they will be prompted for
-# input_password = secret
-# output_password = secret
-
-# This sets a mask for permitted string types. There are several options. 
-# default: PrintableString, T61String, BMPString.
-# pkix	 : PrintableString, BMPString (PKIX recommendation before 2004)
-# utf8only: only UTF8Strings (PKIX recommendation after 2004).
-# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
-# MASK:XXXX a literal mask value.
-# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
-string_mask = utf8only
-
-# req_extensions = v3_req # The extensions to add to a certificate request
-
-[ req_distinguished_name ]
-countryName			= Country Name (2 letter code)
-countryName_default		=
-
-stateOrProvinceName		= State or Province Name (full name)
-stateOrProvinceName_default	= Some-State
-
-localityName			= Locality Name (eg, city)
-
-0.organizationName		= Organization Name (eg, company)
-0.organizationName_default	= Apache Software Foundation
-
-organizationalUnitName		= Organizational Unit Name (eg, section)
-organizationalUnitName_default	= HttpComponents Project
-
-commonName			= Common Name (e.g. server FQDN or YOUR name)
-commonName_max			= 64
-
-emailAddress			= Email Address
-emailAddress_max		= 64
-
-# SET-ex3			= SET extension number 3
-
-[ req_attributes ]
-challengePassword		= A challenge password
-challengePassword_min		= 4
-challengePassword_max		= 20
-
-unstructuredName		= An optional company name
-
-[ usr_cert ]
-
-# These extensions are added when 'ca' signs a request.
-
-# This goes against PKIX guidelines but some CAs do it and some software
-# requires this to avoid interpreting an end user certificate as a CA.
-
-basicConstraints=CA:FALSE
-
-# Here are some examples of the usage of nsCertType. If it is omitted
-# the certificate can be used for anything *except* object signing.
-
-# This is OK for an SSL server.
-# nsCertType			= server
-
-# For an object signing certificate this would be used.
-# nsCertType = objsign
-
-# For normal client use this is typical
-# nsCertType = client, email
-
-# and for everything including object signing:
-# nsCertType = client, email, objsign
-
-# This is typical in keyUsage for a client certificate.
-# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
-
-# This will be displayed in Netscape's comment listbox.
-nsComment			= "OpenSSL Generated Certificate"
-
-# PKIX recommendations harmless if included in all certificates.
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid,issuer
-
-# This stuff is for subjectAltName and issuerAltname.
-# Import the email address.
-# subjectAltName=email:copy
-# An alternative to produce certificates that aren't
-# deprecated according to PKIX.
-# subjectAltName=email:move
-
-# Copy subject details
-# issuerAltName=issuer:copy
-
-#nsCaRevocationUrl		= http://www.domain.dom/ca-crl.pem
-#nsBaseUrl
-#nsRevocationUrl
-#nsRenewalUrl
-#nsCaPolicyUrl
-#nsSslServerName
-
-# This is required for TSA certificates.
-# extendedKeyUsage = critical,timeStamping
-
-[ v3_req ]
-
-# Extensions to add to a certificate request
-
-basicConstraints = CA:FALSE
-keyUsage = nonRepudiation, digitalSignature, keyEncipherment
-
-[ v3_ca ]
-
-
-# Extensions for a typical CA
-
-
-# PKIX recommendation.
-
-subjectKeyIdentifier=hash
-
-authorityKeyIdentifier=keyid:always,issuer
-
-# This is what PKIX recommends but some broken software chokes on critical
-# extensions.
-#basicConstraints = critical,CA:true
-# So we do this instead.
-basicConstraints = CA:true
-
-# Key usage: this is typical for a CA certificate. However since it will
-# prevent it being used as an test self-signed certificate it is best
-# left out by default.
-# keyUsage = cRLSign, keyCertSign
-
-# Some might want this also
-# nsCertType = sslCA, emailCA
-
-# Include email address in subject alt name: another PKIX recommendation
-# subjectAltName=email:copy
-# Copy issuer details
-# issuerAltName=issuer:copy
-
-# DER hex encoding of an extension: beware experts only!
-# obj=DER:02:03
-# Where 'obj' is a standard or added object
-# You can even override a supported extension:
-# basicConstraints= critical, DER:30:03:01:01:FF
-
-[ crl_ext ]
-
-# CRL extensions.
-# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
-
-# issuerAltName=issuer:copy
-authorityKeyIdentifier=keyid:always
-
-[ proxy_cert_ext ]
-# These extensions should be added when creating a proxy certificate
-
-# This goes against PKIX guidelines but some CAs do it and some software
-# requires this to avoid interpreting an end user certificate as a CA.
-
-basicConstraints=CA:FALSE
-
-# Here are some examples of the usage of nsCertType. If it is omitted
-# the certificate can be used for anything *except* object signing.
-
-# This is OK for an SSL server.
-# nsCertType			= server
-
-# For an object signing certificate this would be used.
-# nsCertType = objsign
-
-# For normal client use this is typical
-# nsCertType = client, email
-
-# and for everything including object signing:
-# nsCertType = client, email, objsign
-
-# This is typical in keyUsage for a client certificate.
-# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
-
-# This will be displayed in Netscape's comment listbox.
-nsComment			= "OpenSSL Generated Certificate"
-
-# PKIX recommendations harmless if included in all certificates.
-subjectKeyIdentifier=hash
-authorityKeyIdentifier=keyid,issuer
-
-# This stuff is for subjectAltName and issuerAltname.
-# Import the email address.
-# subjectAltName=email:copy
-# An alternative to produce certificates that aren't
-# deprecated according to PKIX.
-# subjectAltName=email:move
-
-# Copy subject details
-# issuerAltName=issuer:copy
-
-#nsCaRevocationUrl		= http://www.domain.dom/ca-crl.pem
-#nsBaseUrl
-#nsRevocationUrl
-#nsRenewalUrl
-#nsCaPolicyUrl
-#nsSslServerName
-
-# This really needs to be in place for it to be a proxy certificate.
-proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
-
-####################################################################
-[ tsa ]
-
-default_tsa = tsa_config1	# the default TSA section
-
-[ tsa_config1 ]
-
-# These are used by the TSA reply generation only.
-dir		= ./demoCA		# TSA root directory
-serial		= $dir/tsaserial	# The current serial number (mandatory)
-crypto_device	= builtin		# OpenSSL engine to use for signing
-signer_cert	= $dir/tsacert.pem 	# The TSA signing certificate
-					# (optional)
-certs		= $dir/cacert.pem	# Certificate chain to include in reply
-					# (optional)
-signer_key	= $dir/private/tsakey.pem # The TSA private key (optional)
-
-default_policy	= tsa_policy1		# Policy if request did not specify it
-					# (optional)
-other_policies	= tsa_policy2, tsa_policy3	# acceptable policies (optional)
-digests		= md5, sha1		# Acceptable message digests (mandatory)
-accuracy	= secs:1, millisecs:500, microsecs:100	# (optional)
-clock_precision_digits  = 0	# number of digits after dot. (optional)
-ordering		= yes	# Is ordering defined for timestamps?
-				# (optional, default: no)
-tsa_name		= yes	# Must the TSA name be included in the reply?
-				# (optional, default: no)
-ess_cert_id_chain	= no	# Must the ESS cert id chain be included?
-				# (optional, default: no)

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore/src/test/resources/ca.keystore
----------------------------------------------------------------------
diff --git a/httpcore/src/test/resources/ca.keystore b/httpcore/src/test/resources/ca.keystore
new file mode 100644
index 0000000..2c93a60
Binary files /dev/null and b/httpcore/src/test/resources/ca.keystore differ

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore/src/test/resources/test-client.keystore
----------------------------------------------------------------------
diff --git a/httpcore/src/test/resources/test-client.keystore b/httpcore/src/test/resources/test-client.keystore
index d3c741f..0cf5dd9 100644
Binary files a/httpcore/src/test/resources/test-client.keystore and b/httpcore/src/test/resources/test-client.keystore differ

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore/src/test/resources/test-keypasswd.keystore
----------------------------------------------------------------------
diff --git a/httpcore/src/test/resources/test-keypasswd.keystore b/httpcore/src/test/resources/test-keypasswd.keystore
index 01dd1bb..b063cb3 100644
Binary files a/httpcore/src/test/resources/test-keypasswd.keystore and b/httpcore/src/test/resources/test-keypasswd.keystore differ

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore/src/test/resources/test-server.keystore
----------------------------------------------------------------------
diff --git a/httpcore/src/test/resources/test-server.keystore b/httpcore/src/test/resources/test-server.keystore
index a88ee08..595a925 100644
Binary files a/httpcore/src/test/resources/test-server.keystore and b/httpcore/src/test/resources/test-server.keystore differ

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore/src/test/resources/test-ssl.txt
----------------------------------------------------------------------
diff --git a/httpcore/src/test/resources/test-ssl.txt b/httpcore/src/test/resources/test-ssl.txt
new file mode 100644
index 0000000..222c4d6
--- /dev/null
+++ b/httpcore/src/test/resources/test-ssl.txt
@@ -0,0 +1,193 @@
+# ====================================================================
+# 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.
+# ====================================================================
+#
+# This software consists of voluntary contributions made by many
+# individuals on behalf of the Apache Software Foundation.  For more
+# information on the Apache Software Foundation, please see
+# <http://www.apache.org/>.
+
+== generate test key store with a self signed key
+
+---
+keytool -genkey \
+  -keystore test.keystore -storepass nopassword \
+  -keyalg RSA -keysize 2048 \
+  -alias simple-http-server \
+  -validity 100000 \
+  -dname "CN=localhost, OU=Apache HttpComponents, O=Apache Software Foundation" \
+  -ext SAN="DNS:localhost"
+---
+
+== generate test key store with a self signed key protected with a key password
+
+---
+keytool -genkey \
+  -keystore test-keypasswd.keystore -storepass nopassword \
+  -keyalg RSA -keysize 2048 -keypass password \
+  -alias simple-http-server \
+  -validity 100000 \
+  -dname "CN=localhost, OU=Apache HttpComponents, O=Apache Software Foundation" \
+  -ext SAN="DNS:localhost"
+---
+
+== generate test CA
+
+---
+keytool -genkeypair \
+  -keystore ca.keystore -storepass nopassword \
+  -keyalg RSA -keysize 2048 -keypass password \
+  -alias ca \
+  -validity 100000 \
+  -dname "EMAILADDRESS=dev@hc.apache.org, CN=Test CA, OU=HttpComponents Project, O=Apache Software Foundation" \
+  -ext KeyUsage:critical="keyCertSign" \
+  -ext BasicConstraints:critical="ca:true" \
+  -ext SAN="EMAIL:dev@hc.apache.org"
+---
+
+== export test CA certificate
+
+---
+keytool -export \
+  -keystore ca.keystore -storepass nopassword -keypass password \
+  -alias ca \
+  -file test-ca.crt \
+  -rfc
+---
+
+== generate test server key
+
+---
+keytool -genkeypair \
+  -keystore test-server.keystore -storepass nopassword \
+  -keyalg RSA -keysize 2048 \
+  -alias server \
+  -validity 100000 \
+  -dname "CN=Test Server, OU=HttpComponents Project, O=Apache Software Foundation"
+---
+
+== create server certificate signing request
+
+---
+keytool -certreq \
+  -keystore test-server.keystore -storepass nopassword \
+  -alias server \
+  -file server.csr
+---
+
+== sign server certificate
+
+---
+keytool -gencert \
+  -keystore ca.keystore -storepass nopassword -keypass password \
+  -alias ca \
+  -infile server.csr \
+  -outfile server.crt \
+  -ext KeyUsage:critical="digitalSignature,keyEncipherment" \
+  -ext EKU="serverAuth" \
+  -ext SAN="DNS:localhost" \
+  -rfc
+---
+
+== import CA root certificate and signed server certificate
+
+---
+keytool -importcert \
+  -keystore test-server.keystore -storepass nopassword \
+  -file test-ca.crt \
+  -alias caroot
+---
+keytool -importcert \
+  -keystore test-server.keystore -storepass nopassword \
+  -file server.crt \
+  -alias server
+---
+
+== generate client keys
+
+---
+keytool -genkeypair \
+  -keystore test-client.keystore -storepass nopassword \
+  -keyalg RSA -keysize 2048 \
+  -alias client1 \
+  -validity 100000 \
+  -dname "CN=Test Client 1, OU=HttpComponents Project, O=Apache Software Foundation"
+---
+keytool -genkeypair \
+  -keystore test-client.keystore -storepass nopassword \
+  -keyalg RSA -keysize 2048 \
+  -alias client2 \
+  -validity 100000 \
+  -dname "CN=Test Client 2, OU=HttpComponents Project, O=Apache Software Foundation"
+---
+
+== create client certificate signing requests
+
+---
+keytool -certreq \
+  -keystore test-client.keystore -storepass nopassword \
+  -alias client1 \
+  -file client1.csr
+---
+keytool -certreq \
+  -keystore test-client.keystore -storepass nopassword \
+  -alias client2 \
+  -file client2.csr
+---
+
+== sign client certificates
+
+---
+keytool -gencert \
+  -keystore ca.keystore -storepass nopassword -keypass password \
+  -alias ca \
+  -infile client1.csr \
+  -outfile client1.crt \
+  -ext EKU="clientAuth" \
+  -ext SAN="EMAIL:test-client-1@hc.apache.org" \
+  -rfc
+---
+keytool -gencert \
+  -keystore ca.keystore -storepass nopassword -keypass password \
+  -alias ca \
+  -infile client2.csr \
+  -outfile client2.crt \
+  -ext EKU="clientAuth" \
+  -ext SAN="EMAIL:test-client-2@hc.apache.org" \
+  -rfc
+---
+
+== import CA root certificate and signed server certificate
+
+---
+keytool -importcert \
+  -keystore test-client.keystore -storepass nopassword \
+  -file test-ca.crt \
+  -alias caroot
+---
+keytool -importcert \
+  -keystore test-client.keystore -storepass nopassword \
+  -file client1.crt \
+  -alias client1
+---
+keytool -importcert \
+  -keystore test-client.keystore -storepass nopassword \
+  -file client2.crt \
+  -alias client2
+---
+

http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/5eef139d/httpcore/src/test/resources/test.keystore
----------------------------------------------------------------------
diff --git a/httpcore/src/test/resources/test.keystore b/httpcore/src/test/resources/test.keystore
index 917f83e..3ac5ac0 100644
Binary files a/httpcore/src/test/resources/test.keystore and b/httpcore/src/test/resources/test.keystore differ