2013-07-17 1 views
0

Мы используем следующие версии разл библиотекSSL проблема с HttpGet вероятно потому, что сервер запрашивает аутентификацию клиента

Apache-HttpComponents-HttpCore = 4.1; 
Apache-HttpComponents-HttpClient = 4.1.1; 
JDK       = 1.6_64; 

и вдруг перед SSLPeerUnverifiedException (HTTP Get failing for HTTPS with javax.net.ssl.SSLPeerUnverifiedException для более подробной информации).

Я пробовал разные вещи, но я не знаю, почему мы не можем подключиться к https://www.google.com даже после принятия всех сертификатов (хотя, как объяснено в комментарии, это может вызвать человека в средней атаке).

Возможно ли, что Google начал ожидать получения сертификата от клиента? Если да, что нам делать?

Спасибо,

+0

Вы пытались установить '-Djavax.net.debug = ssl'? – Bruno

+0

Нет, постараюсь наверняка! – instanceOfObject

+0

Я получаю 'ssl_error_rx_record_too_long' при попытке браузера с тем же прокси-сервером, который я использую с HttpClient. – instanceOfObject

ответ

0

Может быть так, что Google начал ожидает сертификат от клиента? Если да, что нам делать?

Если я понимаю, что вы правильно, а google действительно нужны сертификаты, вы должны использовать криптопровайдер и делать подписи с помощью stunnel.

Возможно, что-то не так с кодом? Эти настройки работают для меня

public HttpClient getNewHttpClient() { 
    try { 
     KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); 
     trustStore.load(null, null); 

     SSLSocketFactory sf = new MySSLSocketFactory(trustStore); 
     sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 

     HttpParams params = new BasicHttpParams(); 
     HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); 
     HttpProtocolParams.setContentCharset(params, HTTP.UTF_8); 

     SchemeRegistry registry = new SchemeRegistry(); 
     registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); 
     registry.register(new Scheme("https", sf, 443)); 

     ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry); 

     return new DefaultHttpClient(ccm, params); 
    } catch (Exception e) { 
     return new DefaultHttpClient(); 
    } 
} 
+0

Зачем разрешать потенциальные атаки MITM с помощью команды «ALLOW_ALL_HOSTNAME_VERIFIER»? – Bruno

 Смежные вопросы

  • Нет связанных вопросов^_^