package org.infernus.idea.checkstyle.model; import org.jetbrains.annotations.NotNull; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import java.io.IOException; import java.io.InputStream; import java.security.cert.X509Certificate; /** * A configuration location located on a HTTP server for which we wish to ignore any SSL * errors. Caveat emptor. */ public class InsecureHTTPURLConfigurationLocation extends HTTPURLConfigurationLocation { public InsecureHTTPURLConfigurationLocation() { super(ConfigurationType.INSECURE_HTTP_URL); } @NotNull @Override protected InputStream resolveFile() throws IOException { TrustManager[] trustAllCerts = new TrustManager[]{new AllTrustingTrustManager()}; try { final SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (Exception ignored) { // we care not for security } return super.resolveFile(); } private static class AllTrustingTrustManager implements X509TrustManager { @Override public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[] {}; } @Override public void checkClientTrusted(final X509Certificate[] certs, final String authType) { } @Override public void checkServerTrusted(final X509Certificate[] certs, final String authType) { } } }