Hallo Leute!
Ich entwickle ein Programm das automatisiert Rechnungen von einem Server runterläd, sich dazu gegebenfalls einloggt. Dazu nutze ich den Apache HttpClient.
Manche Seiten benutzen selbst erstellte Zertifikate, wo durch es dann zu Problemen kam. Deswegen hab ich mir meinen eigenen TrustManager erstellt und ihn dem HTTPS Schema zugewiesen. Alles klappt wunderbar!
TrustManager der allen zertifikaten vertraut:
SSLSocketFactory:
Für den Fall das man nur zertifizierte Zertifikate (die von Java aus dabei sind) annehmen darf benötige ich jetzt eine SSLSocketFactory die ich dem HTTPS Scheme zuweisen kann! Also eigentlich einfach den Java Standard für so etwas. Doch ich find einfach nichts nützliches im Internet.
Ich benutze Apache HttpClient 4.1!
Ich entwickle ein Programm das automatisiert Rechnungen von einem Server runterläd, sich dazu gegebenfalls einloggt. Dazu nutze ich den Apache HttpClient.
Manche Seiten benutzen selbst erstellte Zertifikate, wo durch es dann zu Problemen kam. Deswegen hab ich mir meinen eigenen TrustManager erstellt und ihn dem HTTPS Schema zugewiesen. Alles klappt wunderbar!
TrustManager der allen zertifikaten vertraut:
Java:
package com.bis.ssl;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
public class TrustAllX509TrustManager implements X509TrustManager {
@Override
public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
SSLSocketFactory:
Java:
SSLSocketFactory sslSocketFactory = null;
SSLContext sslContext = SSLContext.getInstance("SSL");
TrustManager easyTrustManager = new TrustAllX509TrustManager();
sslContext.init(null, new TrustManager[]{easyTrustManager}, new SecureRandom());
sslSocketFactory = new SSLSocketFactory(sslContext);
Scheme https = new Scheme("https", 443, sslSocketFactory);
Scheme http = new Scheme("http", 80, PlainSocketFactory.getSocketFactory());
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(http);
schemeRegistry.register(https);
HttpParams params = new BasicHttpParams();
ClientConnectionManager cm = new SingleClientConnManager(schemeRegistry);
this.httpClient = new DefaultHttpClient(cm, params);
Für den Fall das man nur zertifizierte Zertifikate (die von Java aus dabei sind) annehmen darf benötige ich jetzt eine SSLSocketFactory die ich dem HTTPS Scheme zuweisen kann! Also eigentlich einfach den Java Standard für so etwas. Doch ich find einfach nichts nützliches im Internet.
Ich benutze Apache HttpClient 4.1!