tidy up mess that is SSL support.
This commit is contained in:
-62
@@ -1,62 +0,0 @@
|
|||||||
package org.mifosng.ui.infrastructure;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.Socket;
|
|
||||||
import java.net.UnknownHostException;
|
|
||||||
import java.security.KeyManagementException;
|
|
||||||
import java.security.KeyStore;
|
|
||||||
import java.security.KeyStoreException;
|
|
||||||
import java.security.NoSuchAlgorithmException;
|
|
||||||
import java.security.UnrecoverableKeyException;
|
|
||||||
|
|
||||||
import javax.net.ssl.SSLContext;
|
|
||||||
import javax.net.ssl.TrustManager;
|
|
||||||
import javax.net.ssl.X509TrustManager;
|
|
||||||
|
|
||||||
import org.apache.http.conn.ssl.SSLSocketFactory;
|
|
||||||
|
|
||||||
public class MySSLSocketFactory extends SSLSocketFactory {
|
|
||||||
|
|
||||||
private SSLContext sslContext;
|
|
||||||
|
|
||||||
public MySSLSocketFactory(SSLContext sslContext, KeyStore truststore)
|
|
||||||
throws NoSuchAlgorithmException, KeyManagementException,
|
|
||||||
KeyStoreException, UnrecoverableKeyException {
|
|
||||||
super(truststore);
|
|
||||||
this.sslContext = sslContext;
|
|
||||||
|
|
||||||
TrustManager tm = new X509TrustManager() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void checkServerTrusted(
|
|
||||||
java.security.cert.X509Certificate[] chain, String authType)
|
|
||||||
throws java.security.cert.CertificateException {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void checkClientTrusted(
|
|
||||||
java.security.cert.X509Certificate[] chain, String authType)
|
|
||||||
throws java.security.cert.CertificateException {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
sslContext.init(null, new TrustManager[] { tm }, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Socket createSocket(Socket socket, String host, int port,
|
|
||||||
boolean autoClose) throws IOException, UnknownHostException {
|
|
||||||
return sslContext.getSocketFactory().createSocket(socket, host, port,
|
|
||||||
autoClose);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Socket createSocket() throws IOException {
|
|
||||||
return sslContext.getSocketFactory().createSocket();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+4
-47
@@ -1,25 +1,16 @@
|
|||||||
package org.mifosng.ui.infrastructure;
|
package org.mifosng.ui.infrastructure;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.security.KeyManagementException;
|
import java.security.KeyManagementException;
|
||||||
import java.security.KeyStore;
|
|
||||||
import java.security.KeyStoreException;
|
import java.security.KeyStoreException;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.security.UnrecoverableKeyException;
|
import java.security.UnrecoverableKeyException;
|
||||||
import java.security.cert.CertificateException;
|
|
||||||
import java.security.cert.X509Certificate;
|
|
||||||
|
|
||||||
import javax.net.ssl.SSLContext;
|
|
||||||
import javax.net.ssl.SSLException;
|
|
||||||
import javax.net.ssl.SSLSession;
|
|
||||||
import javax.net.ssl.SSLSocket;
|
|
||||||
|
|
||||||
import org.apache.http.client.HttpClient;
|
import org.apache.http.client.HttpClient;
|
||||||
import org.apache.http.conn.ClientConnectionManager;
|
import org.apache.http.conn.ClientConnectionManager;
|
||||||
import org.apache.http.conn.scheme.Scheme;
|
import org.apache.http.conn.scheme.Scheme;
|
||||||
import org.apache.http.conn.scheme.SchemeRegistry;
|
import org.apache.http.conn.scheme.SchemeRegistry;
|
||||||
import org.apache.http.conn.ssl.SSLSocketFactory;
|
import org.apache.http.conn.ssl.SSLSocketFactory;
|
||||||
import org.apache.http.conn.ssl.X509HostnameVerifier;
|
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
|
||||||
import org.springframework.beans.factory.FactoryBean;
|
import org.springframework.beans.factory.FactoryBean;
|
||||||
import org.springframework.beans.factory.InitializingBean;
|
import org.springframework.beans.factory.InitializingBean;
|
||||||
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
|
||||||
@@ -56,39 +47,9 @@ public class RestTemplateFactory implements FactoryBean<RestTemplate>,
|
|||||||
ClientConnectionManager clientConnectionManager = client.getConnectionManager();
|
ClientConnectionManager clientConnectionManager = client.getConnectionManager();
|
||||||
SchemeRegistry registry = clientConnectionManager.getSchemeRegistry();
|
SchemeRegistry registry = clientConnectionManager.getSchemeRegistry();
|
||||||
|
|
||||||
Scheme oldScheme = registry.unregister("https");
|
SSLSocketFactory factory = new SSLSocketFactory(new TrustSelfSignedStrategy(), SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
||||||
|
// SSLContext context = SSLContext.getInstance("TLS");
|
||||||
KeyStore trustStore = KeyStore.getInstance(KeyStore
|
Scheme newHttpsScheme = new Scheme("https", 443, factory);
|
||||||
.getDefaultType());
|
|
||||||
|
|
||||||
trustStore.load(null, null);
|
|
||||||
|
|
||||||
X509HostnameVerifier hostnameVerifier = new X509HostnameVerifier() {
|
|
||||||
@Override
|
|
||||||
public boolean verify(String arg0, SSLSession arg1) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void verify(String host, String[] cns, String[] subjectAlts)
|
|
||||||
throws SSLException {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void verify(String host, X509Certificate cert) throws SSLException {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void verify(String host, SSLSocket ssl) throws IOException {
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
SSLContext context = SSLContext.getInstance("TLS");
|
|
||||||
SSLSocketFactory factory = new MySSLSocketFactory(context, trustStore);
|
|
||||||
factory.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
|
|
||||||
factory.setHostnameVerifier(hostnameVerifier);
|
|
||||||
|
|
||||||
Scheme newHttpsScheme = new Scheme("https", 8443, factory);
|
|
||||||
registry.register(newHttpsScheme);
|
registry.register(newHttpsScheme);
|
||||||
|
|
||||||
restTemplate = new RestTemplate(requestFactory);
|
restTemplate = new RestTemplate(requestFactory);
|
||||||
@@ -96,10 +57,6 @@ public class RestTemplateFactory implements FactoryBean<RestTemplate>,
|
|||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
} catch (NoSuchAlgorithmException e) {
|
} catch (NoSuchAlgorithmException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
} catch (CertificateException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
} catch (KeyManagementException e) {
|
} catch (KeyManagementException e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
} catch (UnrecoverableKeyException e) {
|
} catch (UnrecoverableKeyException e) {
|
||||||
|
|||||||
Reference in New Issue
Block a user