Java - Trying to log into website with invalid ssl certificate using httpclient
- by PCBEEF
I'm trying to log into site with invalid ssl certificate and I have the following code.
I bypass the the invalid cert by using my all certificate and then bypass the invalid Hostname by using hostnameverifier.
However, the hostnameverifier does not seem to work and I still get the error message
javax.net.ssl.SSLException: hostname in certificate didn't match:
The code is:
public static void main(String[] args) {
    TrustManager[] trustAllCerts = new TrustManager[] {
            new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) { }
                public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType) { } 
            } 
    };
    HostnameVerifier hv = new HostnameVerifier() {
        public boolean verify(String urlHostName, SSLSession session) {
            System.out.println("Warning: URL Host: "+urlHostName+" vs. "+session.getPeerHost());
            return true;
        }
    };
    try {
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(hv);
    } catch (Exception e) {
    }
    try {
        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpContext localContext = new BasicHttpContext();
        List<NameValuePair> formparams = new ArrayList<NameValuePair>();
        formparams.add(new BasicNameValuePair("username", "user"));
        formparams.add(new BasicNameValuePair("password", "pword"));
        UrlEncodedFormEntity entity;
        entity = new UrlEncodedFormEntity(formparams, "UTF-8");
        HttpPost httppost = new HttpPost("https://www.mysite.com/");
        httppost.setEntity(entity);
        HttpResponse response = httpclient.execute(httppost, localContext);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}