2016-05-26 7 views
0

Ich versuche org.apache.http.client.HttpClient zu konfigurieren, mit https zu arbeiten. Dies ist die Client-Konfiguration:Apache HttpClient Fehler: javax.net.ssl.SSLPeerUnverifiedException: Peer nicht authentifiziert

TrustManager[] trustManagers = new TrustManager[] { new DummyTrustManager() }; 

SSLContext sslContext = SSLContext.getInstance("TLS"); 
sslContext.init(keyManagers, trustManagers, null); 

SSLSocketFactory sf = new SSLSocketFactory(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 

Scheme scheme = new Scheme("https", 443, sf); 
SchemeRegistry registry = new SchemeRegistry(); 
registry.register(scheme); 

ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(registry); 

DefaultHttpClient client = new DefaultHttpClient(cm, httpParameters); 

Dies ist der Code von DummyTrustManager:

public static class DummyTrustManager implements X509TrustManager { 

    @Override 
    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { 
    } 

    @Override 
    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { 
    } 

    @Override 
    public X509Certificate[] getAcceptedIssuers() { 
     return null; 
    } 
} 

Und wenn ich Anfrage senden, erhalte ich

`javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated` 

Was könnte das Problem sein?

Antwort

1

Sie müssen auch die TrustStrategy anzupassen:

TrustStrategy acceptingTrustStrategy = new TrustStrategy() { 
    @Override 
    public boolean isTrusted(X509Certificate[] certificate, String authType) { 
     return true; 
    } 
}; 
SSLSocketFactory sf = new SSLSocketFactory(acceptingTrustStrategy, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 
... 

sehen ein vollständiges Beispiel an: http://www.baeldung.com/httpclient-ssl

+0

Ich versuche, dies zu tun, aber Ergebnis ist das gleiche - 'Peer nicht authenticated' ... – Kirill

Verwandte Themen