Author: veithen
Date: Sun Jan 6 17:26:36 2019
New Revision: 1850574
URL: http://svn.apache.org/viewvc?rev=1850574&view=rev
Log:
Partially merge r1780738 to the 1.7 branch.
Modified:
axis/axis2/java/core/branches/1_7/modules/testutils/ (props changed)
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/AbstractAxis2Server.java
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/Axis2Server.java
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/ClientHelper.java
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/JettyServer.java
Propchange: axis/axis2/java/core/branches/1_7/modules/testutils/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Sun Jan 6 17:26:36 2019
@@ -1,4 +1,4 @@
/axis/axis2/java/core/branches/1_6/modules/testutils:1295540
/axis/axis2/java/core/branches/AXIOM-420/modules/testutils:1334386-1336397
/axis/axis2/java/core/branches/AXIS2-4318/modules/testutils:1230452,1295542,1324772,1327468,1329571,1332141,1335355,1335357,1340985
-/axis/axis2/java/core/trunk/modules/testutils:1726494,1726509,1726513,1727171,1727174,1727177,1727180,1729891,1730095,1730139,1730180,1730186,1730195,1730197,1730222,1730300,1730308,1730310,1730317,1730322,1730335,1730369,1730427,1730618,1731425,1731441,1731446,1731448,1732354,1733137,1733225,1733663,1733713,1733766,1733770,1733773,1733850,1734176,1735331,1735795,1735801,1736512,1736543,1737030,1737567,1739001,1739186,1739343,1739346,1739348,1739493,1739592,1739594-1739595,1739815,1739826,1740693-1740694,1741976-1741977,1742201,1743824,1745826,1745860,1745869,1745875,1745912,1745924,1745929,1745941,1746001,1746028,1746109,1746782,1746784,1746787,1746813,1746842,1746880,1746883,1746889,1746894,1747448,1747466,1747503,1747575,1747578,1747601,1747773,1747920,1751057,1752039,1765132,1765183,1765188,1765192-1765193,1775081,1775102,1776253,1776585,1776594,1778204,1779069,1779074,1779816,1780290,1780684,1780714,1780723-1780724,1780726,1780733,1787632,1787676,1789029,1792353,1792376,1792650
,1792655,1792802,1792804,1793723-1793724,1793728,1794114,1794192,1797821,1797823,1799068,1800495,1803414,1805563,1806088,1806288,1806292,1806303-1806305,1806309,1806319,1806344,1806349-1806350,1806577,1806581,1806719,1807643,1807837,1807941,1807943,1808789,1809384-1809385,1809411,1809504,1809507,1809514,1809517,1810596,1810600,1810603,1815035,1815137,1815139,1817866,1817872,1819265,1820601,1821801,1821809,1823604,1823614,1823712,1826036,1831475,1831477,1831917,1832205,1835900,1836506,1837506-1837507,1837540,1838336,1843339,1843344,1844999,1845031,1845035,1845166,1845183,1848535,1848643-1848644,1848708,1848721,1848799,1849034,1849255,1849801,1850485
+/axis/axis2/java/core/trunk/modules/testutils:1726494,1726509,1726513,1727171,1727174,1727177,1727180,1729891,1730095,1730139,1730180,1730186,1730195,1730197,1730222,1730300,1730308,1730310,1730317,1730322,1730335,1730369,1730427,1730618,1731425,1731441,1731446,1731448,1732354,1733137,1733225,1733663,1733713,1733766,1733770,1733773,1733850,1734176,1735331,1735795,1735801,1736512,1736543,1737030,1737567,1739001,1739186,1739343,1739346,1739348,1739493,1739592,1739594-1739595,1739815,1739826,1740693-1740694,1741976-1741977,1742201,1743824,1745826,1745860,1745869,1745875,1745912,1745924,1745929,1745941,1746001,1746028,1746109,1746782,1746784,1746787,1746813,1746842,1746880,1746883,1746889,1746894,1747448,1747466,1747503,1747575,1747578,1747601,1747773,1747920,1751057,1752039,1765132,1765183,1765188,1765192-1765193,1775081,1775102,1776253,1776585,1776594,1778204,1779069,1779074,1779816,1780290,1780684,1780714,1780723-1780724,1780726,1780733,1780738,1787632,1787676,1789029,1792353,1792376
,1792650,1792655,1792802,1792804,1793723-1793724,1793728,1794114,1794192,1797821,1797823,1799068,1800495,1803414,1805563,1806088,1806288,1806292,1806303-1806305,1806309,1806319,1806344,1806349-1806350,1806577,1806581,1806719,1807643,1807837,1807941,1807943,1808789,1809384-1809385,1809411,1809504,1809507,1809514,1809517,1810596,1810600,1810603,1815035,1815137,1815139,1817866,1817872,1819265,1820601,1821801,1821809,1823604,1823614,1823712,1826036,1831475,1831477,1831917,1832205,1835900,1836506,1837506-1837507,1837540,1838336,1843339,1843344,1844999,1845031,1845035,1845166,1845183,1848535,1848643-1848644,1848708,1848721,1848799,1849034,1849255,1849801,1850485
Modified:
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/AbstractAxis2Server.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/AbstractAxis2Server.java?rev=1850574&r1=1850573&r2=1850574&view=diff
==============================================================================
---
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/AbstractAxis2Server.java
(original)
+++
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/AbstractAxis2Server.java
Sun Jan 6 17:26:36 2019
@@ -18,6 +18,8 @@
*/
package org.apache.axis2.testutils;
+import javax.net.ssl.SSLContext;
+
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
@@ -63,6 +65,7 @@ public abstract class AbstractAxis2Serve
protected abstract void stopServer();
public abstract boolean isSecure();
+ public abstract SSLContext getClientSSLContext() throws Exception;
public abstract int getPort();
public abstract String getEndpoint(String serviceName) throws AxisFault;
public abstract EndpointReference getEndpointReference(String serviceName)
throws AxisFault;
Modified:
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/Axis2Server.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/Axis2Server.java?rev=1850574&r1=1850573&r2=1850574&view=diff
==============================================================================
---
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/Axis2Server.java
(original)
+++
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/Axis2Server.java
Sun Jan 6 17:26:36 2019
@@ -18,6 +18,8 @@
*/
package org.apache.axis2.testutils;
+import javax.net.ssl.SSLContext;
+
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
@@ -37,6 +39,11 @@ public class Axis2Server extends Abstrac
}
@Override
+ public SSLContext getClientSSLContext() {
+ return null;
+ }
+
+ @Override
public int getPort() {
if (port == -1) {
throw new IllegalStateException();
Modified:
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/ClientHelper.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/ClientHelper.java?rev=1850574&r1=1850573&r2=1850574&view=diff
==============================================================================
---
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/ClientHelper.java
(original)
+++
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/ClientHelper.java
Sun Jan 6 17:26:36 2019
@@ -18,11 +18,15 @@
*/
package org.apache.axis2.testutils;
+import java.io.IOException;
import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
import javax.xml.namespace.QName;
-import org.apache.axis2.AxisFault;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.client.Stub;
import org.apache.axis2.context.ConfigurationContext;
@@ -47,6 +51,10 @@ public class ClientHelper extends Extern
protected final void before() throws Throwable {
configurationContext =
ConfigurationContextFactory.createConfigurationContextFromFileSystem(repositoryPath);
+ SSLContext sslContext = server.getClientSSLContext();
+ if (sslContext != null) {
+ configurationContext.setProperty(SSLContext.class.getName(),
sslContext);
+ }
}
@Override
@@ -62,8 +70,22 @@ public class ClientHelper extends Extern
}
public final ServiceClient createServiceClient(String serviceName, QName
wsdlServiceName, String portName) throws Exception {
+ URLStreamHandler handler;
+ if (server.isSecure()) {
+ final SSLContext sslContext = server.getClientSSLContext();
+ handler = new URLStreamHandler() {
+ @Override
+ protected URLConnection openConnection(URL url) throws
IOException {
+ HttpsURLConnection conn = (HttpsURLConnection)new
URL(url.toExternalForm()).openConnection();
+ conn.setSSLSocketFactory(sslContext.getSocketFactory());
+ return conn;
+ }
+ };
+ } else {
+ handler = null;
+ }
ServiceClient serviceClient = new ServiceClient(configurationContext,
- new URL(server.getEndpoint(serviceName) + "?wsdl"),
wsdlServiceName, portName);
+ new URL(null, server.getEndpoint(serviceName) + "?wsdl",
handler), wsdlServiceName, portName);
configureServiceClient(serviceClient);
return serviceClient;
}
Modified:
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/JettyServer.java
URL:
http://svn.apache.org/viewvc/axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/JettyServer.java?rev=1850574&r1=1850573&r2=1850574&view=diff
==============================================================================
---
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/JettyServer.java
(original)
+++
axis/axis2/java/core/branches/1_7/modules/testutils/src/main/java/org/apache/axis2/testutils/JettyServer.java
Sun Jan 6 17:26:36 2019
@@ -31,6 +31,8 @@ import java.security.cert.X509Certificat
import java.util.Date;
import java.util.Random;
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManagerFactory;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
@@ -71,12 +73,9 @@ public class JettyServer extends Abstrac
private final boolean secure;
private File keyStoreFile;
- private File trustStoreFile;
+ private SSLContext clientSslContext;
+ private SslContextFactory serverSslContextFactory;
private Server server;
- private boolean systemPropertiesSet;
- private String savedTrustStore;
- private String savedTrustStorePassword;
- private String savedTrustStoreType;
/**
* Constructor.
@@ -108,6 +107,64 @@ public class JettyServer extends Abstrac
}
}
+ private void generateKeys() throws Exception {
+ SecureRandom random = new SecureRandom();
+
+ // Generate key pair
+ KeyPairGenerator keyPairGenerator =
KeyPairGenerator.getInstance("RSA");
+ keyPairGenerator.initialize(1024, random);
+ KeyPair keyPair = keyPairGenerator.generateKeyPair();
+ PrivateKey privateKey = keyPair.getPrivate();
+ PublicKey publicKey = keyPair.getPublic();
+
+ // Generate certificate
+ X500Name dn = new X500Name("cn=localhost,o=Apache");
+ BigInteger serial = BigInteger.valueOf(random.nextInt());
+ Date notBefore = new Date();
+ Date notAfter = new Date(notBefore.getTime() + 3600000L);
+ SubjectPublicKeyInfo subPubKeyInfo =
SubjectPublicKeyInfo.getInstance(publicKey.getEncoded());
+ X509v3CertificateBuilder certBuilder = new
X509v3CertificateBuilder(dn, serial, notBefore, notAfter, dn, subPubKeyInfo);
+ X509CertificateHolder certHolder = certBuilder.build(new
JcaContentSignerBuilder("SHA1WithRSA").build(privateKey));
+ X509Certificate cert = new
JcaX509CertificateConverter().getCertificate(certHolder);
+
+ // Build key store
+ keyStoreFile = File.createTempFile("keystore", "jks", null);
+ String keyStorePassword = generatePassword(random);
+ String keyPassword = generatePassword(random);
+ KeyStore keyStore = KeyStore.getInstance("JKS");
+ keyStore.load(null, null);
+ keyStore.setKeyEntry(CERT_ALIAS, privateKey,
keyPassword.toCharArray(), new X509Certificate[] { cert });
+ writeKeyStore(keyStore, keyStoreFile, keyStorePassword);
+
+ // Build trust store
+ KeyStore trustStore = KeyStore.getInstance("JKS");
+ trustStore.load(null, null);
+ trustStore.setCertificateEntry(CERT_ALIAS, cert);
+
+ serverSslContextFactory = new SslContextFactory();
+
serverSslContextFactory.setKeyStorePath(keyStoreFile.getAbsolutePath());
+ serverSslContextFactory.setKeyStorePassword(keyStorePassword);
+ serverSslContextFactory.setKeyManagerPassword(keyPassword);
+ serverSslContextFactory.setCertAlias(CERT_ALIAS);
+
+ clientSslContext = SSLContext.getInstance("TLS");
+ TrustManagerFactory tmfactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
+ tmfactory.init(trustStore);
+ clientSslContext.init(null, tmfactory.getTrustManagers(), null);
+ }
+
+ @Override
+ public SSLContext getClientSSLContext() throws Exception {
+ if (secure) {
+ if (clientSslContext == null) {
+ generateKeys();
+ }
+ return clientSslContext;
+ } else {
+ return null;
+ }
+ }
+
@Override
protected void startServer(final ConfigurationContext
configurationContext) throws Throwable {
server = new Server();
@@ -116,58 +173,11 @@ public class JettyServer extends Abstrac
SelectChannelConnector connector = new SelectChannelConnector();
server.addConnector(connector);
} else {
- SecureRandom random = new SecureRandom();
-
- // Generate key pair
- KeyPairGenerator keyPairGenerator =
KeyPairGenerator.getInstance("RSA");
- keyPairGenerator.initialize(1024, random);
- KeyPair keyPair = keyPairGenerator.generateKeyPair();
- PrivateKey privateKey = keyPair.getPrivate();
- PublicKey publicKey = keyPair.getPublic();
-
- // Generate certificate
- X500Name dn = new X500Name("cn=localhost,o=Apache");
- BigInteger serial = BigInteger.valueOf(random.nextInt());
- Date notBefore = new Date();
- Date notAfter = new Date(notBefore.getTime() + 3600000L);
- SubjectPublicKeyInfo subPubKeyInfo =
SubjectPublicKeyInfo.getInstance(publicKey.getEncoded());
- X509v3CertificateBuilder certBuilder = new
X509v3CertificateBuilder(dn, serial, notBefore, notAfter, dn, subPubKeyInfo);
- X509CertificateHolder certHolder = certBuilder.build(new
JcaContentSignerBuilder("SHA1WithRSA").build(privateKey));
- X509Certificate cert = new
JcaX509CertificateConverter().getCertificate(certHolder);
-
- // Build key store
- keyStoreFile = File.createTempFile("keystore", "jks", null);
- String keyStorePassword = generatePassword(random);
- String keyPassword = generatePassword(random);
- KeyStore keyStore = KeyStore.getInstance("JKS");
- keyStore.load(null, null);
- keyStore.setKeyEntry(CERT_ALIAS, privateKey,
keyPassword.toCharArray(), new X509Certificate[] { cert });
- writeKeyStore(keyStore, keyStoreFile, keyStorePassword);
-
- // Build trust store
- trustStoreFile = File.createTempFile("truststore", "jks", null);
- String trustStorePassword = generatePassword(random);
- KeyStore trustStore = KeyStore.getInstance("JKS");
- trustStore.load(null, null);
- trustStore.setCertificateEntry(CERT_ALIAS, cert);
- writeKeyStore(trustStore, trustStoreFile, trustStorePassword);
-
- SslContextFactory sslContextFactory = new SslContextFactory();
- sslContextFactory.setKeyStorePath(keyStoreFile.getAbsolutePath());
- sslContextFactory.setKeyStorePassword(keyStorePassword);
- sslContextFactory.setKeyManagerPassword(keyPassword);
- sslContextFactory.setCertAlias(CERT_ALIAS);
- SslSelectChannelConnector sslConnector = new
SslSelectChannelConnector(sslContextFactory);
-
+ if (serverSslContextFactory == null) {
+ generateKeys();
+ }
+ SslSelectChannelConnector sslConnector = new
SslSelectChannelConnector(serverSslContextFactory);
server.addConnector(sslConnector);
-
- savedTrustStore = System.getProperty("javax.net.ssl.trustStore");
- System.setProperty("javax.net.ssl.trustStore",
trustStoreFile.getAbsolutePath());
- savedTrustStorePassword =
System.getProperty("javax.net.ssl.trustStorePassword");
- System.setProperty("javax.net.ssl.trustStorePassword",
trustStorePassword);
- savedTrustStoreType =
System.getProperty("javax.net.ssl.trustStoreType");
- System.setProperty("javax.net.ssl.trustStoreType", "JKS");
- systemPropertiesSet = true;
}
WebAppContext context = new WebAppContext();
@@ -224,35 +234,12 @@ public class JettyServer extends Abstrac
}
server = null;
}
- if (systemPropertiesSet) {
- if (savedTrustStore != null) {
- System.setProperty("javax.net.ssl.trustStore",
savedTrustStore);
- } else {
- System.clearProperty("javax.net.ssl.trustStore");
- }
- if (savedTrustStorePassword != null) {
- System.setProperty("javax.net.ssl.trustStorePassword",
savedTrustStorePassword);
- } else {
- System.clearProperty("javax.net.ssl.trustStorePassword");
- }
- if (savedTrustStoreType != null) {
- System.setProperty("javax.net.ssl.trustStoreType",
savedTrustStoreType);
- } else {
- System.clearProperty("javax.net.ssl.trustStoreType");
- }
- savedTrustStore = null;
- savedTrustStorePassword = null;
- savedTrustStoreType = null;
- systemPropertiesSet = false;
- }
if (keyStoreFile != null) {
keyStoreFile.delete();
keyStoreFile = null;
}
- if (trustStoreFile != null) {
- trustStoreFile.delete();
- trustStoreFile = null;
- }
+ clientSslContext = null;
+ serverSslContextFactory = null;
}
@Override