2011-10-27 4 views
0

here과 같이 SSLFactory 클래스와 TrustManager 클래스를 추가했습니다.자체 서명 SSL 연결 - Android

나는 다음과 같은 연결을 설정하고 있습니다 :

//does not work 
String url = "https://waprd.uark.edu/web-apps/regr/scheduleofclasses/Main?strm=1123"; 
    //http://bektemirov.com/a/android.php?t=amurica //simple http - works 

HttpClient client = new DefaultHttpClient(clientConnectionManager, params); 
HttpGet get = new HttpGet(url); 
try { 
    HttpResponse response = client.execute(get, context); 
    HttpEntity entity = response.getEntity(); 

    String responseText = EntityUtils.toString(entity); 
    Body.setText(responseText); 

} catch (ClientProtocolException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

연결이 특정 링크마다 실패합니다. 올바른 방향으로 나를 안내해 주시겠습니까?

+0

예외는 무엇입니까? 전체 스택 추적은 무엇입니까? – Cratylus

+0

신뢰할 수없는 서버 인증 : '10-27 01 : 02 : 10.620 : WARN/System.err (381) : javax.net.ssl.SSLException : 신뢰할 수없는 서버 인증서 ' ' 10-27 01:02 : 10.630 : WARN/System.err (381) : org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake (OpenSSLSocketImpl.java:371)' ' 10-27 01 : 02 : 10.630 : 경고/시스템. err (381) : org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl $ SSLInputStream에서. (OpenSSLSocketImpl.java:520)' 10-27 01 : 02 : 10.630 : WARN/System.err (381) : org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.getInputStream (OpenSSLSocketImpl.java:461)) ' ... – webo

+0

예외는 서버가 보내는 인증서가 신뢰할 수 없다고 말합니다.'SSLContext '를 구성하는 코드는 어디에 있습니까? OP를 업데이트하십시오. – Cratylus

답변

0

SSLContext를 초기화 할 때 TrustManager 배열을 전달하는 매개 변수가 있습니다.이 매개 변수를 사용하면 사용자가 직접 TrustManager를 정의하여 모두 허용 할 수 있습니다. 주요 단계 중 일부는 다음과 같습니다 :

  1. 서브 클래스의 SSLSocketFactory

  2. 사용자의 TrustManager은의 SSLSocketFactory의 하위 클래스에서 모든 인증서를 수용 할 수 있습니다.

  3. SSLSontext를 SSLSocketFactory의 서브 클래스에서 사용자 정의 된 TrustManager로 초기화하십시오.

  4. SSLSocketFactory의 서브 클래스에 'https'를 등록 할 수있는 SchemeRegistry를 사용하는 HttpParams 및 ClientConnectionManager를 사용하여 매개 변수화 된 DefaultHttpClient를 만듭니다.

그러면 모든 https 응답은 사용자 지정된 TrustManager 클래스에서 처리됩니다.

관련 문제