2013-04-21 1 views
0

를 사용하여 무시 후 나는 다음과 같은 코드를 사용하여 바이 패스 인증서 노력하고 있어요 :얻기 SSL 오류도의 TrustManager

개인 정적 HttpClient를 wrapClient (HttpClient를베이스) AGException 발생을 { 는 { 의 SSLContext CTX = SSLContext.getInstance 시도 ("TLS");

X509TrustManager tm = new X509TrustManager() 
    { 
    public void checkClientTrusted(X509Certificate[] xcs, String string) throws CertificateException 
    { 
    } 

    public void checkServerTrusted(X509Certificate[] xcs, String string) throws CertificateException { 
    } 

    public X509Certificate[] getAcceptedIssuers() { 
     return null; 
    } 
    }; 
    ctx.init(null, new TrustManager[] { tm }, null); 

    SSLSocketFactory ssf = new SSLSocketFactory(ctx,SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); 


    ClientConnectionManager ccm = base.getConnectionManager(); 

    SchemeRegistry sr = ccm.getSchemeRegistry(); 

    sr.register(new Scheme("https", 443, ssf)); 

    return new DefaultHttpClient(ccm, base.getParams()); 
} 
catch (NoSuchAlgorithmException nsaex) 
{ 
    throw new AGException(nsaex, "Not able to get the SSL Context"); 
} 
catch (KeyManagementException kmex) { 
    throw new AGException(kmex, "Not able to get the SSL Context"); 
} 

}

여전히 아래 오류 javax.net.ssl.SSLPeerUnverifiedException를 받고 : 난 터널에 퍼티를 사용하고

:

를 인증되지 피어 단지 내의 할당은 브리핑을 서버에 연결하고 HTTP를 통해 SOAP을 호출하여 해당 서버에 연결합니다. 위의 코드를 사용해도 동일한 오류가 발생합니다.

어떤 도움/아이디어라도 크게 도움이 될 것입니다. 미리 감사드립니다.

- 니 시시

답변

1

안전하지 않은 TrustManager를 사용하지 마십시오.

피어가 인증서를 전혀 제공하지 않았다는 것이 문제입니다.

+0

피어라고하면 클라이언트 또는 서버를 의미합니까? 제 경우에는 제 편에서 어떤 인증서도 사용하고 있지 않습니다. 제가 언급했듯이 제가 사용하는 인증서를 무시하고 싶습니다. 요약하면 보안 서버 (https 호출)를 핸드 셰이크를 무시하고 위의 코드에서 사용하고 싶습니다. 올바른 코드를 공유하거나 내 코드에서 변경할 위치를 알려주는 것이 매우 유용합니다. 미리 감사드립니다. – Nitish

+0

내가 '피어'라고 말하면 전선의 반대쪽에있는 남자를 의미합니다. – EJP

관련 문제