title: Trusting all certificates using HttpClient over HTTPS
body: <p>Recently posted a question regarding the <code>HttpClient</code> over Https (<a href="https://stackoverflow.com/questions/2603691/android-httpclient-and-https">found here</a>).  I've made some headway, but I've run into new issues. As with my last problem, I can't seem to find an example anywhere that works for me. Basically, I want my client to accept any certificate (because I'm only ever pointing to one server) but I keep getting a <code>javax.net.ssl.SSLException: Not trusted server certificate exception.</code></p>
  
  <p>So this is what I have:</p>
  
  <pre class="lang-java prettyprint-override"><code>
      public void connect() throws A_WHOLE_BUNCH_OF_EXCEPTIONS {
  
          HttpPost post = new HttpPost(new URI(PROD_URL));
          post.setEntity(new StringEntity(BODY));
  
          KeyStore trusted = KeyStore.getInstance("BKS");
          trusted.load(null, "".toCharArray());
          SSLSocketFactory sslf = new SSLSocketFactory(trusted);
          sslf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
  
          SchemeRegistry schemeRegistry = new SchemeRegistry();
          schemeRegistry.register(new Scheme ("https", sslf, 443));
          SingleClientConnManager cm = new SingleClientConnManager(post.getParams(),
                  schemeRegistry);
  
          HttpClient client = new DefaultHttpClient(cm, post.getParams());
          HttpResponse result = client.execute(post);
      }
  </code></pre>
  
  <p>And here's the error I'm getting:</p>
  
  <pre class="lang-sh prettyprint-override"><code>    W/System.err(  901): javax.net.ssl.SSLException: Not trusted server certificate 
      W/System.err(  901):    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:360) 
      W/System.err(  901):    at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:92) 
      W/System.err(  901):    at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:321) 
      W/System.err(  901):    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:129) 
      W/System.err(  901):    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164) 
      W/System.err(  901):    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119) 
      W/System.err(  901):    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:348) 
      W/System.err(  901):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
      W/System.err(  901):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
      W/System.err(  901):    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 
      W/System.err(  901):    at me.harrisonlee.test.ssl.MainActivity.connect(MainActivity.java:129) 
      W/System.err(  901):    at me.harrisonlee.test.ssl.MainActivity.access$0(MainActivity.java:77) 
      W/System.err(  901):    at me.harrisonlee.test.ssl.MainActivity$2.run(MainActivity.java:49) 
      W/System.err(  901): Caused by: java.security.cert.CertificateException: java.security.InvalidAlgorithmParameterException: the trust anchors set is empty 
      W/System.err(  901):    at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:157) 
      W/System.err(  901):    at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:355) 
      W/System.err(  901):    ... 12 more 
      W/System.err(  901): Caused by: java.security.InvalidAlgorithmParameterException: the trust anchors set is empty 
      W/System.err(  901):    at java.security.cert.PKIXParameters.checkTrustAnchors(PKIXParameters.java:645) 
      W/System.err(  901):    at java.security.cert.PKIXParameters.&lt;init&gt;(PKIXParameters.java:89) 
      W/System.err(  901):    at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.&lt;init&gt;(TrustManagerImpl.java:89) 
      W/System.err(  901):    at org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl.engineGetTrustManagers(TrustManagerFactoryImpl.java:134) 
      W/System.err(  901):    at javax.net.ssl.TrustManagerFactory.getTrustManagers(TrustManagerFactory.java:226)W/System.err(  901):     at org.apache.http.conn.ssl.SSLSocketFactory.createTrustManagers(SSLSocketFactory.java:263) 
      W/System.err(  901):    at org.apache.http.conn.ssl.SSLSocketFactory.&lt;init&gt;(SSLSocketFactory.java:190) 
      W/System.err(  901):    at org.apache.http.conn.ssl.SSLSocketFactory.&lt;init&gt;(SSLSocketFactory.java:216) 
      W/System.err(  901):    at me.harrisonlee.test.ssl.MainActivity.connect(MainActivity.java:107) 
      W/System.err(  901):    ... 2 more
  </code></pre>