2016-05-26 16 views
0

org.apache.http.client.HttpClientをhttpsで使用するように設定しようとしています。これは、クライアントの構成です:Apache HttpClientエラー:javax.net.ssl.SSLPeerUnverifiedException:ピアが認証されていない

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); 

これは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; 
    } 
} 

そして、私は要求を送信し、私が問題になる可能性がどのような

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

を取得しますか?

答えて

1

またTrustStrategyを調整する必要があります:私はこれを行う試みてhttp://www.baeldung.com/httpclient-ssl

+0

が、結果は同じである - 'ピアがauthenticated'ない...:

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

はで完全な例を参照してください – Kirill

関連する問題