Last active
December 2, 2015 11:08
-
-
Save rocboronat/3c6d15a6c6e9a6a292cc to your computer and use it in GitHub Desktop.
A Retrofit Client that ignores autosigned certificate issues
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class DebugClient extends DefaultHttpClient { | |
@Override | |
protected ClientConnectionManager createClientConnectionManager() { | |
KeyStore trustStore = null; | |
try { | |
trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); | |
trustStore.load(null, null); | |
} catch (KeyStoreException kse) { | |
kse.printStackTrace(); | |
} catch (CertificateException e) { | |
e.printStackTrace(); | |
} catch (NoSuchAlgorithmException e) { | |
e.printStackTrace(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
SSLSocketFactory sf = null; | |
try { | |
sf = new MySSLSocketFactory(trustStore); | |
} catch (NoSuchAlgorithmException e) { | |
e.printStackTrace(); | |
} catch (KeyManagementException e) { | |
e.printStackTrace(); | |
} catch (KeyStoreException e) { | |
e.printStackTrace(); | |
} catch (UnrecoverableKeyException e) { | |
e.printStackTrace(); | |
} | |
sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); | |
HttpParams params = new BasicHttpParams(); | |
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); | |
HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); | |
SchemeRegistry registry = new SchemeRegistry(); | |
registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); | |
registry.register(new Scheme("https", sf, 443)); | |
return new ThreadSafeClientConnManager(getParams(), registry); | |
} | |
} | |
class MySSLSocketFactory extends SSLSocketFactory { | |
SSLContext sslContext = SSLContext.getInstance("TLS"); | |
public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException { | |
super(truststore); | |
TrustManager tm = new X509TrustManager() { | |
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { | |
} | |
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { | |
} | |
public X509Certificate[] getAcceptedIssuers() { | |
return null; | |
} | |
}; | |
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(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment