package no.ntnu.item.csv.communication; import java.io.ByteArrayInputStream; import java.security.KeyStore; import java.security.KeyStore.TrustedCertificateEntry; import java.security.cert.CertificateException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import org.apache.http.conn.ClientConnectionManager; 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.impl.client.DefaultHttpClient; import org.apache.http.impl.conn.SingleClientConnManager; public class SecureHttpClient extends DefaultHttpClient { // TODO: At the time this needs to be the correct certificate of the server public final String createCert = "-----BEGIN CERTIFICATE-----\n" + "MIIGRTCCBC2gAwIBAgIJAMz4xviSLzd2MA0GCSqGSIb3DQEBCwUAMHQxCzAJBgNV\n" + "BAYTAk5PMRYwFAYDVQQIFA1T+HItVHL4bmRlbGFnMRIwEAYDVQQHEwlUcm9uZGhl\n" + "aW0xDTALBgNVBAoTBE5UTlUxDTALBgNVBAsTBElURU0xGzAZBgNVBAMTEmNyZWF0\n" + "ZS5xMnMubnRudS5ubzAeFw0xMTA2MDkwOTM0NDNaFw0xMjA2MDgwOTM0NDNaMHQx\n" + "CzAJBgNVBAYTAk5PMRYwFAYDVQQIFA1T+HItVHL4bmRlbGFnMRIwEAYDVQQHEwlU\n" + "cm9uZGhlaW0xDTALBgNVBAoTBE5UTlUxDTALBgNVBAsTBElURU0xGzAZBgNVBAMT\n" + "EmNyZWF0ZS5xMnMubnRudS5ubzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC\n" + "ggIBANBPU9/FgZcpIUzpcKvG8PUJeiY5cCaPx4Lg8sXDBukL6JzpsngBbCZujxYe\n" + "XV0j8FStLcV2hKAw1MH+sy8hEVIoOzEoWOFxu22Bt+7pcBVXlqqU1LZFMd/r4P2p\n" + "1ck3LxMoOjzzNvotVtakDFN4mR6kGaunKe4MlVROYJ8u5lkKiBlz1zeajfE87a0W\n" + "xwAHipGav5mkOaijAtQe9sYZETQkisv9pBVLdS67OKf78+rIoLLqvaAjg62+TagO\n" + "nhl0xPmfcqNWnvrDe2HYU8ZfDX3FelxtxUY6qBrHcsDJcpvCeiMgxWaFpdGSti9s\n" + "Hc3O5L2EkvzLC3oB7hbmthHeZZlty8uucwNmCLRt9p56F9oFSd16eNVhkxgNJDKA\n" + "qAS3dWY1ZPyL5Lpr/prciCyvi1b3/4v74rtgZEZkT8QoizI5m6KEePEon7FLo4Oc\n" + "6tUfLwiFKAVAFuyTPa2M3E4PbJ/J6+FMuyaIPQVgsewytSYFGT1Sz8ZirrNH1W3e\n" + "2RAwkEo1VCgGC7RJyHmMkM2anJQ0QFrg1CI0llWacZVzuhpoA2JhbPzozee+H/YU\n" + "JyzMkfEqA8NrxO9j67frewi/w9mAWNsy1iprjnOHrrT/IoTPHRcamEkqtN9XPLoA\n" + "dcRKhokGTphminE4Ee8HIcyUQooENytAF4Scm1bALoc3JwhLAgMBAAGjgdkwgdYw\n" + "HQYDVR0OBBYEFDEY2yXQUvQWrAHSE86CQyL6XufkMIGmBgNVHSMEgZ4wgZuAFDEY\n" + "2yXQUvQWrAHSE86CQyL6XufkoXikdjB0MQswCQYDVQQGEwJOTzEWMBQGA1UECBQN\n" + "U/hyLVRy+G5kZWxhZzESMBAGA1UEBxMJVHJvbmRoZWltMQ0wCwYDVQQKEwROVE5V\n" + "MQ0wCwYDVQQLEwRJVEVNMRswGQYDVQQDExJjcmVhdGUucTJzLm50bnUubm+CCQDM\n" + "+Mb4ki83djAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCwJan04M3w\n" + "d+Jt2iA04+aWw8ydT0+kVgNrpoQvMrJORD5+4IQkBUVrpJtq3LeAAsKlJHhNGfGO\n" + "xdibKTQdGfdus+EFPXCj09tiR2SQFm7wUa69H80Qw/mv3rFSAYy7YfZ8OWnBaUPY\n" + "wZEiZeo78pCBkiEIuYwn4g8ReWHtVdSZcHQJpYdQVly1Ta8sE/LiS+h6EaAIC1EE\n" + "UJTjs+E6ClXGjZPew0V73Zy+n8pBy88w3qvoukNnbNTz9UbfCBXhzJ37HNaLoj3q\n" + "IC6Hn6vOoy5VrtyeUfwggomkVBBUIBcN275kRqS/1cHwN4cFehUmwyZUGfAQSRCD\n" + "oIWDmXTG1gZ/65ObfLtfqlcGI1jZ3e0yMWee4Be6UU/KpYGbkV6SBWygIXruuETL\n" + "Df77DkxXxYfSiZCRezjwGIZHWq9t/G4jxZPMRHmUuU8wKtFH2ZyS769qHk5NAcxR\n" + "Scn43qPNmr7jTyCU9la3iCaCfWrrWt6tXhclf2QowMaeX4MAWuHj7UBA+2SDOhIr\n" + "1YgkwDmIuSwrgqC8LS1mqBZuJ+3PdBCaxvXKMeY2fQTrXuqfzjWaVq34RdzEo5Ik\n" + "3z4+0wl5WnRTfWdlydsS5Sgg64zNPOUmkckXZTl83sD1Wpu8ViuB64kek0zpybx2\n" + "Fbie9s/Qs1M+6Vhy7WfBBTzy7O0YbCalAw==\n" + "-----END CERTIFICATE-----\n"; public SecureHttpClient() { super(); } @SuppressWarnings("deprecation") @Override protected ClientConnectionManager createClientConnectionManager() { SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("https", newSslSocketFactory(), 443)); return new SingleClientConnManager(getParams(), registry); } private SSLSocketFactory newSslSocketFactory() { try { KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); ks.load(null, null); TrustedCertificateEntry certEntry = new TrustedCertificateEntry( generateCertificate()); ks.setCertificateEntry("create.q2s", certEntry.getTrustedCertificate()); return new SSLSocketFactory(ks); } catch (Exception e) { throw new AssertionError(e); } } private X509Certificate generateCertificate() { ByteArrayInputStream is = new ByteArrayInputStream( this.createCert.getBytes()); CertificateFactory cf; X509Certificate cert = null; try { cf = CertificateFactory.getInstance("X.509"); cert = (X509Certificate) cf.generateCertificate(is); } catch (CertificateException e) { e.printStackTrace(); } return cert; } }