org.eclipse.lyo.testsuite.server.trsutils.EasySSLClient.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.lyo.testsuite.server.trsutils.EasySSLClient.java

Source

/*******************************************************************************
 * Copyright (c) 2013 IBM Corporation.
 *
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * and Eclipse Distribution License v. 1.0 which accompanies this distribution.
 *
 * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
 * and the Eclipse Distribution License is available at
 * http://www.eclipse.org/org/documents/edl-v10.php.
 * 
 * Contributors:
 * 
 *    Joseph Leong - Initial implementation
 *******************************************************************************/
package org.eclipse.lyo.testsuite.server.trsutils;

import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.UnrecoverableKeyException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.conn.ssl.TrustStrategy;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.DefaultHttpClient;

public class EasySSLClient {
    private DefaultHttpClient httpClient;

    public EasySSLClient() throws Exception {
        httpClient = new DefaultHttpClient();
        initCookiePolicy();
        initSSLPolicy();
    }

    void initCookiePolicy() {
        httpClient.setCookieStore(new BasicCookieStore());
    }

    void initSSLPolicy() throws Exception {
        Scheme http1 = new Scheme("http", 80, PlainSocketFactory.getSocketFactory());
        Scheme http2 = new Scheme("http", 8080, PlainSocketFactory.getSocketFactory());
        Scheme http3 = new Scheme("http", 8082, PlainSocketFactory.getSocketFactory());
        Scheme http4 = new Scheme("http", 9080, PlainSocketFactory.getSocketFactory());
        Scheme http5 = new Scheme("http", 9081, PlainSocketFactory.getSocketFactory());

        SSLSocketFactory sf = null;

        try {
            sf = getEasySSLSocketFactory();
        } catch (Exception e) {
            e.printStackTrace();
            throw new Exception("Unable to initialize SSL HttpClient");
        }

        Scheme https1 = new Scheme("https", 443, sf);
        Scheme https2 = new Scheme("https", 8443, sf);
        Scheme https3 = new Scheme("https", 9443, sf);
        Scheme https4 = new Scheme("https", 9444, sf);

        SchemeRegistry schemeRegistry = httpClient.getConnectionManager().getSchemeRegistry();

        schemeRegistry.register(http1);
        schemeRegistry.register(http2);
        schemeRegistry.register(http3);
        schemeRegistry.register(http4);
        schemeRegistry.register(http5);
        schemeRegistry.register(https1);
        schemeRegistry.register(https2);
        schemeRegistry.register(https3);
        schemeRegistry.register(https4);
    }

    private SSLSocketFactory getEasySSLSocketFactory()
            throws KeyManagementException, UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException {
        TrustStrategy trustStrategy = new TrustStrategy() {
            @Override
            public boolean isTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
                return true; // Accept Self-Signed Certs
            }
        };

        SSLSocketFactory sslSocketFactory = null;

        //Bypass check for hostname verification
        sslSocketFactory = new SSLSocketFactory(trustStrategy, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

        return sslSocketFactory;
    }

    public DefaultHttpClient getClient() {
        return this.httpClient;
    }
}