Błąd HttpClient 403 podczas używania prawidłowego certyfikatu klienta
Próbuję zautomatyzować niektóre zadania na stronie internetowej przy użyciu Java. Mam prawidłowego klienta dla tej strony (działa, gdy loguję się przy użyciu firefox), ale wciąż próbuję zalogować się przy użyciu klienta http, otrzymując błąd 403. Zauważ, że chcę, aby mój sklep zaufania ufał wszystkim (wiem, że nie jest bezpieczny, ale w tym momencie nie martwię się o to).
Oto mój kod:
KeyStore keystore = getKeyStore();//Implemented somewhere else and working ok
String password = "changeme";
SSLContext context = SSLContext.getInstance("SSL");
KeyManagerFactory kmfactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
kmfactory.init(keystore, password.toCharArray());
context.init(kmfactory.getKeyManagers(), new TrustManager[] { new X509TrustManager() {
@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] arg0, String arg1)
throws CertificateException {
}
@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] arg0, String arg1)
throws CertificateException {
}
@Override
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
} }, new SecureRandom());
SSLSocketFactory sf = new SSLSocketFactory(context);
Scheme httpsScheme = new Scheme("https", 443, sf);
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(httpsScheme);
ClientConnectionManager cm = new SingleClientConnManager(schemeRegistry);
HttpClient client = new DefaultHttpClient(cm);
HttpGet get = new HttpGet("https://theurl.com");
HttpResponse response = client.execute(get);
System.out.println(EntityUtils.toString(response.getEntity(), "UTF-8"));
Ostatnia instrukcja wypisuje błąd 403. Czego mi tu brakuje?