title: Untrusted certificate error and httpclient on android
body: <p>I'm using the Apache HttpClient library to setup a https connection. Unfortunately Android gives me a "Not trusted server certificate" error. If I browse to the site with the phone's browser it validates the certificate correctly, which leads me to believe that I need to make the HttpClient 'aware' of the root certificates on the phone. This is my HttpClient setup code:</p>
  
  <pre><code>HttpParams params = new BasicHttpParams();
  
  HttpConnectionParams.setConnectionTimeout( params, 20000 );
  HttpConnectionParams.setSoTimeout( params, 20000 );
  
  HttpProtocolParams.setVersion( params, HttpVersion.HTTP_1_1);
  HttpProtocolParams.setContentCharset( params, HTTP.DEFAULT_CONTENT_CHARSET);
  HttpProtocolParams.setUseExpectContinue( params, false);
  
  SchemeRegistry schReg = new SchemeRegistry();
  schReg.register( new Scheme( "http", PlainSocketFactory.getSocketFactory(), 80 ) );
  schReg.register( new Scheme( "https", SSLSocketFactory.getSocketFactory(), 443 ) );
  
  ClientConnectionManager conMgr = new ThreadSafeClientConnManager( params, schReg );
  
  DefaultHttpClient defaultHttpClient = new DefaultHttpClient( conMgr, params );
  
  return ( defaultHttpClient );
  </code></pre>
  
  <p>As you can see I do nothing special with the SSLSocketFactory. How can I make the HttpClient library validate my site without adding a custom certificate in the keystore?. Should I create a custom SSLSocketFactory and load the cacerts.bks from the Android phone? In that case I might get problems with different passwords for the keystore on different phones? </p>
  
  <p>Please let me know if you need further information. This SSL stuff is pretty difficult for me.</p>