Apache HttpClient 4.3 und x509 Client-Zertifikat zur Authentifizierung
Jetzt suche ich nach einer Lösung für die Aufgabe, wie die veraltete Lösung für die clientseitige x509-Zertifikatauthentifizierung über HttpComponentsMessageSender (nicht relevant) umgeschrieben werden kann.
Veraltete Lösung ist beispielsweise:
SSLSocketFactory lSchemeSocketFactory = new SSLSocketFactory(this.keyStore, this.keyStorePassword);
Scheme sch = new Scheme("https", 443, lSchemeSocketFactory);
DefaultHttpClient httpClient = (DefaultHttpClient)getHttpClient();
httpClient.getConnectionManager().getSchemeRegistry().register(sch);
Als neue Lösung mit CloseableHttpClient verwende ich:
SSLContextBuilder sslContextBuilder = SSLContexts.custom()
// this key store must contain the key/cert of the client
.loadKeyMaterial(keyStore, keyStorePassword.toCharArray());
if (trustStore != null) {
// this key store must contain the certs needed and trusted to verify the servers cert
sslContextBuilder.loadTrustMaterial(trustStore);
}
SSLContext sslContext = sslContextBuilder.build();
LayeredConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext);
// Create a registry of custom connection socket factories for supported
// protocol schemes / https
Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("https", sslsf)
.register("http", new PlainConnectionSocketFactory())
.build();
PoolingHttpClientConnectionManager connPoolControl =
new PoolingHttpClientConnectionManager(socketFactoryRegistry);
setConnPoolControl(connPoolControl);
getClientBuilder().setSSLSocketFactory(sslsf);
Ich bekomme immer noch 403 vom Server verboten. Aber wenn ich "veraltete" Version der Lösung verwende, funktioniert es großartig. SSL-Zertifikat ist Thawte signiert.
Irgendeine Idee? Vielen Dank