Skip to content
This repository has been archived by the owner on Feb 18, 2021. It is now read-only.

Commit

Permalink
HTTPS-Support
Browse files Browse the repository at this point in the history
  • Loading branch information
devjta committed Aug 17, 2013
1 parent 367c12e commit 0d207b5
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 0 deletions.
85 changes: 85 additions & 0 deletions src/main/java/at/co/blogspot/javaskeleton/WebClientDevWrapper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package at.co.blogspot.javaskeleton;

import java.io.IOException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLException;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSession;

import org.apache.http.client.HttpClient;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.conn.ssl.X509HostnameVerifier;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.log4j.Logger;

import de.perdoctus.synolib.RequestExecutor;

/*
* http://javaskeleton.blogspot.co.at/2010/07/avoiding-peer-not-authenticated-with.html
* This code is public domain: you are free to use, link and/or modify it in any way you want, for all purposes including commercial applications.
*/
public class WebClientDevWrapper {


private static final Logger LOG = Logger.getLogger(RequestExecutor.class);


public static HttpClient wrapClient(HttpClient base) {
return wrapClient(base, 443);
}

public static HttpClient wrapClient(HttpClient base, int port) {
try {
SSLContext ctx = SSLContext.getInstance("TLS");
X509TrustManager tm = new X509TrustManager() {

public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException {
}

public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException {
}

public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
X509HostnameVerifier verifier = new X509HostnameVerifier() {

@Override
public void verify(String string, SSLSocket ssls) throws IOException {
}

@Override
public void verify(String string, X509Certificate xc) throws SSLException {
}

@Override
public void verify(String string, String[] strings, String[] strings1) throws SSLException {
}

@Override
public boolean verify(String string, SSLSession ssls) {
return true;
}
};
ctx.init(null, new TrustManager[]{tm}, null);
SSLSocketFactory ssf = new SSLSocketFactory(ctx);
ssf.setHostnameVerifier(verifier);
ClientConnectionManager ccm = base.getConnectionManager();
SchemeRegistry sr = ccm.getSchemeRegistry();
sr.register(new Scheme("https", ssf, port));
return new DefaultHttpClient(ccm, base.getParams());
} catch (Exception ex) {
LOG.error("Error enabling https-connections", ex);
return null;
}
}
}
3 changes: 3 additions & 0 deletions src/main/java/de/perdoctus/synolib/RequestExecutor.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.exc.UnrecognizedPropertyException;

import at.co.blogspot.javaskeleton.WebClientDevWrapper;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URI;
Expand Down Expand Up @@ -68,6 +70,7 @@ public <T extends DownloadRedirectorResponse> T executeRequest(DownloadRedirecto
}
if (this.httpClient == null) {
this.httpClient = new DefaultHttpClient();
WebClientDevWrapper.wrapClient(httpClient);
}

HttpUriRequest request;
Expand Down

0 comments on commit 0d207b5

Please sign in to comment.