-----BEGIN CERTIFICATE----- MIIDIDCCAomgAwIBAgIJAPMefpUKXulbMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV ... vHfWjlx0hIVJ7YHycQXny1Io5fQovDSfh6qR1aUTRf6Bg7Ym -----END CERTIFICATE-----
クラス:
// http://d.hatena.ne.jp/Kazzz/20110320/p1
public class MyHttpClient extends DefaultHttpClient {
ByteArrayInputStream si;
public MyHttpClient(String x509) {
try {
si = new ByteArrayInputStream(x509.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
throw new RuntimeException(e);
}
}
@Override
protected ClientConnectionManager createClientConnectionManager() {
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http", PlainSocketFactory
.getSocketFactory(), 80));
registry.register(new Scheme("https",
(SocketFactory) createSSLSocketFactory(), 443));
return new SingleClientConnManager(getParams(), registry);
}
private SSLSocketFactory createSSLSocketFactory() {
KeyStore keyStore;
try {
si.reset();
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Certificate oreore = cf.generateCertificate(si);
keyStore = KeyStore.getInstance("BKS");
keyStore.load(null, null);
keyStore.setCertificateEntry("alias", oreore);
SSLSocketFactory socketFactory = new SSLSocketFactory(keyStore);
socketFactory
.setHostnameVerifier(SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
return socketFactory;
} catch (KeyStoreException e) {
return null;
} catch (NoSuchAlgorithmException e) {
return null;
} catch (CertificateException e) {
return null;
} catch (UnsupportedEncodingException e) {
return null;
} catch (IOException e) {
return null;
} catch (KeyManagementException e) {
return null;
} catch (UnrecoverableKeyException e) {
return null;
}
}
}
使い方:
return new MyHttpClient(x509);
x509には証明書の文字列を設定してください。
API level 9 準拠